我在一个集群上运行OpenFOAM模拟,它们需要几天才能完成。我正在寻找一种方法来监控这个过程,并获得一些有意义的见解。目前我可以做的是观察日志文件的尾部使用
watch tail -n 15 log.log
从here我还发现了一个不错的GnuPlot grep脚本:
^{pr2}$它从log.log
文件中提取信息,如果我在顶部某处添加set term dumb
,它就可以在终端中绘制。然而,这个情节非常拥挤,很难看,它需要很长时间才能显示出来,并且它会按顺序打印到终端,而不是更新前一个。在
在互联网上搜索我发现有一些不错的python库,比如npyscreen/picotui,ncurses/breeded,Asciimatics,Urwid,Prompt Toolkit。。。用于创建TUI/TLI。我想知道你是否可以帮助我知道如何创建一个基于文本的界面来显示基本信息和所选值与时间的关系图。我想要几个面板。一个用来选择我要绘制的变量,例如Courant Number mean
,另一个面板上有一个显示变量与步长时间的曲线图。和其他实时显示所有变量的最新值。我的想法应该类似于urwind's ^{
p.S.因为我发布了以下内容:
PyFoam
的CaseBuilder
,它也使用Urwid。另外,here我被告知PyFoam的项目中有其他尝试从解算器获得一些不错的TUI信息。在
正如上面的注释所述,我为您制作了一些示例代码。它基于Redis,我建议您在cluster manager节点上运行Redis,该节点可能靠近集群的节点,并且一直处于运行状态—因此,这是一个很好的统计数据收集服务的候选节点。在
示例代码是一个虚构的作业,用<强> Python < /St>,以及一个写在^ {CD1>}中的监视程序,但是作业可以用C/C++和在<> Perl 中的监视程序来编写,对于<强> ReISIS < /强>有多种绑定-不要挂在语言上。在
即使你看不懂Python,它也很容易理解。有3个线程并行运行。只需用总的处理时间更新Redis中的
string
。另外两个用时间序列数据更新Redislists
,一个是5hz,另一个是1hz。在我使用了一个Redis字符串,其中变量不需要记录历史,而Redis列表中需要历史记录。其他数据结构可用。在
在下面的代码中,只有3行有趣:
这是正在监视的虚拟作业。从上面写着的地方开始读
^{pr2}$代码如下:
然后我在
bash
中编写了一个监控脚本,该脚本连接到Redis,获取值并在终端上以TUI(文本用户界面)显示它们。您可以同样地使用Python、Perl或PHP,同样地编写图形界面或基于web的界面。在希望您能看到您可以很容易地从Redis获取数据结构。这将获取集群节点上作业内的
processTime
变量集:TUI看起来像这样:
相关问题 更多 >
编程相关推荐