我想知道如何在终端(用于 bash 脚本)中获取每个核心(在运行队列中)正在运行的线程总数?
答案1
我希望获得与图 7 和图 8 相同的信息本文。但是,正如您所说,最安全的方法是修补内核,尽管它可能会影响性能,或者不是适用于每个内核版本的通用解决方案。
我所做的就是使用性能记录调度程序事件踪迹的工具。
对于事件,您还可以使用此处的事件列表放置特定事件:
$ perf list | grep sched
您可以使用以下命令获取文件中的事件,然后根据需要将其转换为可读的内容。
$ perf record -e 'sched:*' -p <PID> sleep <seconds>
使用此命令记录数据后,您可以获得带有时间戳的每个 CPU 核心信息:
$ perf sched timehist -p <samePIDofRecorded> > time_history.txt
要获取纯原始文本数据:
$ perf script > perf.data.txt