2016-11-13 48 views
0

我想要可视化进程的内存映射状态。为此,我分析的不相交间隔的可视化库

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

输出,现在我有时间序列上的实际线间隔不相交的总和。这种数据是否有一个方便的可视化库? Haskell接口对我来说是最省时间的,但任何建议都是值得欢迎的。谢谢!

+1

询问图书馆是不是有问题在这里,但你看看[哈斯卡尔图](https://hackage.haskell.org/package/Chart) – epsilonhalbe

+0

@epsilonhalbe:谢谢,它看起来不错。什么才是正确的术语(或标签)呢?我认为这应该是一种常见的情况,并且会有一个现成的解决方案。 – mnish

+0

@epsilonhalbe:是否要求术语/理论而不是库使这更适合? – mnish

回答

0

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

这里是github reposcreenshot

如果你点击一个区域它是在互动中,堆栈跟踪,负责测绘 会显示这样的记忆:

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] 

同样的颜色对应于MMAP /的msync相同的标志/的madvise等

梗概
$ 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 

在发展我REA的过程突出了问题的惊人几何性。 所以我创建了一个名为Sheaf的模块,并在那里描述了一个定义Grothendieck 拓扑结构和一个常量捆的配方。现在看来,格洛腾迪克(或者劳伦特 - 蒂尔尼)的拓扑结构 实际上是无处不在的编程..但我不确定它是否会证明任何有价值的东西。 所以随时检查它!