- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在执行高性能 Linpack 基准测试时测量双 socket 机器的温度和频率。
我编写了一个 shell 脚本 sensor.sh
,我在后台使用 sh sensors.sh &
启动它,然后继续进行基准测试。
for ((;;))
do
awk 'BEGIN{ORS=" ";} $2=="MHz" {print $4} END {print "\n"}' /proc/cpuinfo >> cpuf.dat
awk 'BEGIN{ORS=" ";} {print $1} END {print "\n"}' /sys/devices/platform/coretemp.?/hwmon/hwmon?/temp*_input >> cput.dat
sleep .1
done
我得到了我的输出文件,但是时间戳彼此之间的间隔不是 0.1 秒。我猜系统很忙,shell 脚本进程没有经常执行。 HPL 说它有大约 1100 秒的运行时间,此时我的 temperature.dat 文件生成了大约 4600 个条目。
有没有其他方法可以在执行基准程序时测量温度和频率并将输出存储在 .dat
文件中?
最佳答案
你的脚本效率很低,需要很多单独的进程来获得一些 CPU 时间才能运行下一个 sleep .1
所以是的,系统负载会降低它的运行频率.
此外,sensors
相对昂贵;也许使用命令行选项让它只检查 CPU 温度。或者我认为 CPU 温度可以直接从 /proc
或 /sys
中的文件获得。
xargs
默认为 echo
,因此它只是一种将空白字符(包括换行符)折叠为空格的低效方法。 (如果你使用 printf '%s\n' foo bar | strace -f xargs
你可以看到它实际上执行 fork + execve /bin/echo
而不是简单地打印像使用 sed
或 tr
那样自行输出。)
您可以使用更高效的文本处理命令,需要更少的 CPU 时间,并通过更少的独立进程进行管道传输,从而减少上下文切换。例如sensors
通过管道传输到一个执行所有文本处理的 awk
命令中。和 sed -n 's/cpu MHz ://p'/proc/cpuinfo >> frequency.dat
以避免无用地使用 cat(和 xargs)。
但这仍然会有一些开销。
您可以编写一个 perl
脚本,从 sensors
进行管道传输,然后关闭/重新打开 /proc/cpuinfo
。 这将避免进程启动时进行的所有系统调用。
您可以让它检查当前时间并休眠到下一个 0.1
秒的倍数,而不是休眠固定时间。您可以使用 bash 来做到这一点,也一样,但这将需要运行更多的命令,并且您希望为您的基准测试引起尽可能少的上下文切换。
您也可以或改为用当前时间标记每一行,这样您就知道每个样本的来源。要在不需要启动另一个外部进程的情况下执行此操作,请使用 bash 的 $EPOCHREALTIME
。像 { echo -n "$EPOCHREALTIME ";哇……; } >> cpuf.dat
如果您仍在使用 bash 而不是 Perl。
关于linux - 在 Linux 上进行基准测试时测量温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408406/
谁能告诉我下面的代码是如何工作的, #define func(t, a, b){ t temp; temp=a; a=b; b=temp;} int main() { int a=3, b=4; f
private static final Group[] toGroups (String string) { int partialGroupSize = strin
我想更改 svg 的此文本部分: **--** 我想显示来自 KNX 安装的温度我已尝试使用以下代码,但没有任何反应: 以 $('#VL_temp' 开头的行有什么问题?其余代码似乎没问题,
目标 测量我的 Linux Box 的 CPU 温度。 到目前为止工作已完成 我已经安装了 lm-sensors 来检测温度,下面是命令传感器的输出: root@XXXX-XX :# sensors
我知道以某种方式获取 CPU 的温度是可能的,因为我下载了一个应用程序,它可以在没有开启Root的设备上执行此操作。它是怎么做到的? 编辑:该应用程序称为 A1 CPU 工具。我花了几天时间寻找答案。
我对如何使用一些视频卡驱动程序 API 读取 GPU 温度(图形处理单元,显卡主芯片)的方法感兴趣? 每个人都知道有两个不同的芯片制造商(至少是流行的)- ATI 和 nVIDIA - 因此有两种不同
我有一个运行 Windows 10 IoT 核心版的 Raspberry Pi 3。我的问题是;是否有可能,或者是否有一种方法可以通过远程 PowerShell 连接、在设备本地的命令行控制台中监控设
这里我真的很疑惑。我想创建一个应用程序,它在我的显卡(AMD 显卡)的不同温度下执行不同的事件。 我想制作这样一个应用程序的原因是,对于 GPU,我还没有找到一个,其次是为了确保我永远不会因为达到巨大
我想获取 CPU 温度。下面是我使用 C++ 和 WMI 所做的。我正在阅读 MSAcpi_ThermalZoneTemperature,但它总是一样的,根本不是 CPU 温度。 有没有什么办法不用写
我正在尝试使用 Raspberry Pi 上的 DS18B20 传感器读取温度。我的问题是从这个传感器读取数据需要时间。它不多,或多或少 1 秒,但我不能让我的主程序等到这完成。我不需要有“最近的值(
我正在为系统性能创建一个个人监控程序,但我在弄清楚 C# 如何检索 CPU 和 GPU 温度信息时遇到了问题。 我已经让程序通过 PerformanceCounter 检索 CPU 负载和频率信息(以
我需要使用 Swift 获取 CPU 温度,但除了 this 之外我找不到任何信息. 我认为我应该使用 IOKit.framework 但同样没有太多关于它的信息。 最佳答案 使用 https://g
我只是想知道。在 PHP 中设置一个没有过期的 cookie(意味着它在浏览器关闭时过期)和设置一个 session 变量之间有什么区别。我不是在谈论登录之类的东西;而不是需要在每次访问页面时获取不太
本文实例讲述了android电源信息查看方法。分享给大家供大家参考。具体如下: 1. PowerTestActivity: ?
我有一个通过 http 连接的温度传感器,我想每 5 秒向 Amcharts 添加一次温度。有人有一些如何向当前数据集添加新值的示例吗?我将使用折线图来表示 y 轴上的温度和 x 轴上的日期时间 谢谢
大家好,我正在尝试通过 php.wsdl Web 服务发送我的温度和湿度传感器,我需要将数据解析到 Web 服务,以便我可以将其从 Web 服务插入 mysql 数据库.. 我遇到了一些问题,请指教
如何从 Linux 上的 bash 获取平均 CPU 温度?最好是华氏度。该脚本应该能够处理不同数量的 CPU。 最佳答案 你这样做: 安装 sudo apt install lm-sensors s
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Getting CPU temperature using Python? 最简单的方法是什么?也最好是摄氏
如何在 Linux 上获取 CPU 的当前温度? 有several questions and answers关于使用 C# 获取 CPU 温度,但它们似乎都是特定于 Windows 的。 最佳答案
我正在使用此代码获取当前 CPU 温度: 并看到了it也是 private float getCurrentCPUTemperature() { String file = readFile
我是一名优秀的程序员,十分优秀!