| Usage |
| ----- |
| |
| These scripts are made to parse TCMalloc output in order to extract certain |
| info from them. |
| |
| In particular, these scripts rely on the error logging system for ChromeOS in |
| order to extract information. In order to use a script (e.g. total_mem.py), you |
| just have the command: |
| |
| ./total_mem.py FILENAME |
| |
| where FILENAME is the name of the log file to be parsed. |
| |
| Codebase Changes |
| ---------------- |
| |
| There are two ideas that motivate these changes: |
| |
| 1- Turn on TCMalloc sampling. |
| 2- Use perf to collect the sample information. |
| |
| The following files have to be changed: |
| |
| in chrome/browser/metrics/perf_provider_chrome_os: |
| |
| add: |
| #include "third_party/tcmalloc/chromium/src/gperftools/malloc_extension.h" |
| |
| Change the perf profiling interval to something small (60*1000 milliseconds). |
| |
| inside DoPeriodicCollection, insert the following code: |
| |
| std::string output; |
| char* chr_arr = new char[9999]; |
| MallocExtension::instance() ->GetHeapSample(&output); |
| MallocExtension::instance() ->GetStats(chr_arr, 9999); |
| LOG(ERROR) << "Output Heap Data: "; |
| LOG(ERROR) << output; |
| LOG(ERROR) << "Output Heap Stats: "; |
| output = ""; |
| for (unsigned int i = 0; i < strlen(chr_arr); i++) { |
| output += chr_arr[i]; |
| } |
| LOG(ERROR) << output; |
| delete[] chr_arr; |