【问题标题】:Visualization library for disjoint intervals不相交区间的可视化库
【发布时间】:2017-03-26 22:46:24
【问题描述】:

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

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

现在我在实线上有一个时间序列不相交的间隔总和。是否有用于此类数据的便捷可视化库? Haskell 界面对我来说是最节省时间的,但欢迎提出任何建议。谢谢!

【问题讨论】:

  • 在这里询问图书馆有点离题,但你看过haskell-chart
  • @epsilonhalbe:谢谢,看起来不错。什么是正确的术语(或标签)?我认为这应该是一个常见的场景,并且会有一个现成的解决方案。
  • @epsilonhalbe:询问术语/理论而不是库是否更适合这里?
  • 我使用的另一个不错的绘图库是 QuickPlot: hackage.haskell.org/package/QuickPlot

标签: r memory shiny data-visualization strace


【解决方案1】:

以防万一这对任何人都有用,我开发了一个小工具来执行此操作。 (顺便说一句,我最终使用 R/Shiny 进行交互式可视化。)

这里是 github repo

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

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

在开发过程中,我意识到问题的惊人几何性。 所以我创建了一个名为Sheaf 的模块,并在那里描述了一个定义格洛腾迪克的配方 拓扑和一个恒定的捆。现在看来是格洛腾迪克(或劳维尔-蒂尔尼)拓扑 实际上无处不在的编程......但我不确定它是否会证明任何值得。 所以请随时检查!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2012-03-23
    • 2023-03-14
    • 2020-07-17
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多