不相交间隔的可视化库

时间:2016-11-13 00:57:04

标签: r memory shiny data-visualization strace

我想要可视化进程的内存映射状态。为此,我解析了

的输出
# strace -s 256 -v -k -f -e trace=memory,process command

现在我在实线上有一系列不相交的间隔和。这些数据是否有方便的可视化库? Haskell界面对我来说是最节省时间的,但任何建议都是受欢迎的。谢谢!

1 个答案:

答案 0 :(得分:0)

为了防止这对任何人都有用,我破解了一个小工具来做到这一点。 (顺便说一下,我最终使用R / Shiny进行交互式可视化。)

这是github reposcreenshot

它是交互式的,如果你单击一个区域,堆栈跟踪负责内存映射 会像这样显示:

for(int i = 1; i <= 11; i++){
    circle.set(((i*5)%circle.size()) - 1, "B");
}

相同的颜色对应于mmap / msync / madvise等的相同标志。

概要

trace:
 22695 mmap(NULL, 251658240, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2b4210000000
/lib/x86_64-linux-gnu/libc-2.19.so(mmap64+0xa) [0xf487a]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN2os17pd_reserve_memoryEmPcm+0x31) [0x91e9c1]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN2os14reserve_memoryEmPcm+0x20) [0x91ced0]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN13ReservedSpace10initializeEmmbPcmb+0x256) [0xac20a6]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN17ReservedCodeSpaceC1Emmb+0x2c) [0xac270c]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN8CodeHeap7reserveEmmm+0xa5) [0x61a3c5]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN9CodeCache10initializeEv+0x80) [0x47ff50]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_Z12init_globalsv+0x45) [0x63c905]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(_ZN7Threads9create_vmEP14JavaVMInitArgsPb+0x23e) [0xa719be]
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(JNI_CreateJavaVM+0x74) [0x6d11c4]
/usr/lib/jvm/java-8-oracle/lib/amd64/jli/libjli.so(JavaMain+0x9e) [0x745e]
/lib/x86_64-linux-gnu/libpthread-2.19.so(start_thread+0xc4) [0x8184]
/lib/x86_64-linux-gnu/libc-2.19.so(clone+0x6d) [0xfa37d]

在开发过程中,我意识到问题的惊人几何性。 所以我创建了一个名为$ make show-prerequisites # (Follow the instructions) $ make COMMAND="time ls" ... DATA_DIR=build/data-2016-12-12_02h38m13s Listening on http://127.0.0.1:5000 .... $ firefox http://127.0.0.1:5000 $ # Re-browse the previous results $ make DATA_DIR=build/data-2016-12-12_02h38m13s 的模块,并描述了一个定义Grothendieck的方法 拓扑和不断的捆。它现在似乎是Grothendieck(或Lawvere-Tierney)的拓扑结构 实际上无处不在的编程..但我不确定它是否会证明任何值得的东西。 所以随便检查一下吧!