Skip to content

Instantly share code, notes, and snippets.

@psifertex
Last active September 3, 2020 03:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save psifertex/aeac8ee84aea234c5a890e18746fbaab to your computer and use it in GitHub Desktop.
Save psifertex/aeac8ee84aea234c5a890e18746fbaab to your computer and use it in GitHub Desktop.
quick and dirty live graphing of memory usage

Quick Raw Data Graph

With thanks to willpatera for the google apps script this is based on.

Instructions:

  1. Make a new google sheet (add column headers like "uss", "rss" or "vss" as posted in log-memory.py as appropriate)
  2. Tools / Script Editor
  3. Paste google code.js into the window
  4. Run / Setup (Authorize the app)
  5. Publish / Deploy as web app
  6. Set permission to "everyone, even anonymously"
  7. Copy the URL to log-memory.py
  8. Create graphs! (Insert / Chart)
  9. Run logging script.
var SHEET_NAME = "sheet1";
var SCRIPT_PROP = PropertiesService.getScriptProperties(); /
function doGet(e){
return handleResponse(e);
}
function doPost(e){
return handleResponse(e);
}
function handleResponse(e) {
var lock = LockService.getPublicLock();
lock.waitLock(30000);
try {
var test_sheet = SHEET_NAME;
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
var sheet = doc.getSheetByName(test_sheet);
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1;
var row = [];
for (i in headers){
if (headers[i] == "Timestamp"){
row.push(new Date());
} else {
row.push(e.parameter[headers[i]]);
}
}
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
return ContentService
.createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
.setMimeType(ContentService.MimeType.JSON);
} catch(e){
return ContentService
.createTextOutput(JSON.stringify({"result":"error", "error": e}))
.setMimeType(ContentService.MimeType.JSON);
} finally {
lock.releaseLock();
}
}
function setup() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
SCRIPT_PROP.setProperty("key", doc.getId());
}
import os
import psutil
import requests
from binaryninja import BinaryViewType
filename = "/path/to/file/to/test"
p = psutil.Process(os.getpid())
counter = 0
while True:
bv = BinaryViewType.get_view_of_file(filename)
bv.file.close()
mem = p.memory_full_info()
print("[{}]: Current Memory --> {}".format(counter, mem))
url='https://script.google.com/macros/s/YOURURLHERE/exec'
try: #don't want transient network issues to kill the script
requests.post(url, data={"uss":mem.uss, "rss":mem.rss, "vms":mem.vms})
except:
continue
counter += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment