嵌入式系统中采集不同负载下的温度笔记

在嵌入式系统中,我们会经常关注cpu的温度特别是再工业级的环境中,本章节我们就对这个方面做一个学习。
以6ul产品为例。

显示温度脚本

一般显示温度的命令为

cat /sys/class/thermal/thermal_zone0/temp

当然显示出来的温度单位不一样,需要乘以一定的倍数,都是整数倍,如有的带2个小数点等等,不一一赘述。
这样我们就可以使用脚本循环打印温度了,那么如何显示负载呢,

负载显示

再不同的平台中负载一般可以通过三个命令来实现,top,vmstat,mpstat,根据不同的平台可能有所不同。再这里我们使用的是vmstat
显示效果如下:

[2023/6/5 10:35:17] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:35:17]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:35:17]  2  0      0 438316   4276  30128    0    0    29     2  117  212  2 62 36  0  0
[2023/6/5 10:35:18]  1  0      0 438320   4276  30128    0    0     0     0  138  138  2 98  0  0  0
[2023/6/5 10:35:19]  1  0      0 438320   4276  30128    0    0     0     0  122  122  3 97  0  0  0

控制cpu负载,

一般我们可以使用md5算法,给cpu加负载,命令如下:

cat /dev/urandom | md5sum &

再不同的平台下有不同的反应,对于多cpu来讲,一般一条指令就将一个cpu负载占满,对于6ul来将,因为它是一个cpu,基本就是占用cpu 100%了。
那么我们如何控制呢,可以使用cpulimit,具体cpulimit的详细用法,这里不再说明,可参考我的其他文章。我们仅简单列举下

./cpulimit -p 900 -l 75 

这样就是将进程id为900的进程占用cpu负载压缩到最大75%。

效果图

 root@imx6ulevk:~# ./cpulimit -p 900 -l 50------------------------------------------------------------------------
[2023/6/5 10:34:03] 
[2023/6/5 10:34:03]  imx6ul platform test 73 begining!
[2023/6/5 10:34:03] 
[2023/6/5 10:34:03] Process 900 found
[2023/6/5 10:34:03]   19:16:44  current temperature= 50.316 runtime= 932.90 343.84  
[2023/6/5 10:34:03]  19:16:44  current freq=  528000
[2023/6/5 10:34:03] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:34:03]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:34:03]  2  0      0 438356   4220  30096    0    0    32     2  117  217  2 61 37  0  0
[2023/6/5 10:34:04]  1  0      0 438296   4220  30096    0    0     0     0  148  217  3 96  1  0  0
[2023/6/5 10:34:05]  1  0      0 438296   4220  30096    0    0     0     0  107  206  2 52 46  0  0
[2023/6/5 10:34:15] ------------------------------------------------------------------------
[2023/6/5 10:34:15] 
[2023/6/5 10:34:15]  imx6ul platform test 74 begining!
[2023/6/5 10:34:15]   19:16:57  current temperature= 48.600 runtime= 945.29 349.16  
[2023/6/5 10:34:15]  19:16:57  current freq=  528000
[2023/6/5 10:34:15] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:34:15]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:34:15]  0  0      0 438336   4228  30096    0    0    31     2  117  217  2 61 37  0  0
[2023/6/5 10:34:16]  1  0      0 438296   4228  30100    0    0     0     0  115  206  0 50 50  0  0
[2023/6/5 10:34:17]  1  0      0 438296   4228  30100    0    0     0     0  111  192  0 58 42  0  0
[2023/6/5 10:34:21] root@imx6ulevk:~# 
[2023/6/5 10:34:21] root@imx6ulevk:~# 
[2023/6/5 10:34:21] root@imx6ulevk:~# 
[2023/6/5 10:34:24] root@imx6ulevk:~# killall cat
[2023/6/5 10:34:24] root@imx6ulevk:~# f4aff7f9cf61c9e29d38d15e6f0aa485  -
[2023/6/5 10:34:25] 
[2023/6/5 10:34:25] [2]+  Done                    cat /dev/urandom | md5sum
[2023/6/5 10:34:25] root@imx6ulevk:~# 
[2023/6/5 10:34:25] root@imx6ulevk:~# 
[2023/6/5 10:34:25] root@imx6ulevk:~# 
[2023/6/5 10:34:25] root@imx6ulevk:~# 
[2023/6/5 10:34:27] root@imx6ulevk:~# ./cpulimit -p 900 -l 75------------------------------------------------------------------------
[2023/6/5 10:34:27] 
[2023/6/5 10:34:27]  imx6ul platform test 75 begining!
[2023/6/5 10:34:28]   19:17:09  current temperature= 48.600 runtime= 957.57 354.97  
[2023/6/5 10:34:28]  19:17:09  current freq=  528000
[2023/6/5 10:34:28] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:34:28]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:34:28]  0  0      0 438764   4244  30124    0    0    31     2  117  216  2 61 37  0  0
[2023/6/5 10:34:29]  0  0      0 438788   4244  30124    0    0     0     0   53   59  0  1 99  0  0
[2023/6/5 10:34:30] root@imx6ulevk:~# top 0  0      0 438788   4244  30124    0    0     0     0   44   52  0  0 100  0  0
[2023/6/5 10:34:32] root@imx6ulevk:~# cat /dev/urandom | md5sum &
[2023/6/5 10:34:32] [2] 2403
[2023/6/5 10:34:40] root@imx6ulevk:~# ------------------------------------------------------------------------
[2023/6/5 10:34:40] 
[2023/6/5 10:34:40]  imx6ul platform test 76 begining!
[2023/6/5 10:34:40]   19:17:21  current temperature= 50.316 runtime= 969.83 359.19  
[2023/6/5 10:34:40]  19:17:21  current freq=  528000
[2023/6/5 10:34:40] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:34:40]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:34:40]  2  0      0 438352   4252  30124    0    0    31     2  117  215  2 61 37  0  0
[2023/6/5 10:34:41]  1  0      0 438320   4252  30124    0    0     0     0  132  127  4 96  0  0  0
[2023/6/5 10:34:42]  1  0      0 438320   4252  30124    0    0     0    12  133  137  1 99  0  0  0
[2023/6/5 10:34:52] ------------------------------------------------------------------------
[2023/6/5 10:34:52] 
[2023/6/5 10:34:52]  imx6ul platform test 77 begining!
[2023/6/5 10:34:52]   19:17:33  current temperature= 50.316 runtime= 982.12 359.19  
[2023/6/5 10:34:52]  19:17:34  current freq=  528000
[2023/6/5 10:34:52] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:34:52]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:34:52]  2  0      0 438328   4260  30128    0    0    30     2  117  214  2 61 36  0  0
[2023/6/5 10:34:53]  1  0      0 438320   4260  30128    0    0     0     0  130  129  2 98  0  0  0
[2023/6/5 10:34:54]  2  0      0 438320   4260  30128    0    0     0     0  123  125  1 99  0  0  0
[2023/6/5 10:35:04] ------------------------------------------------------------------------
[2023/6/5 10:35:04] 
[2023/6/5 10:35:04]  imx6ul platform test 78 begining!
[2023/6/5 10:35:04]   19:17:46  current temperature= 50.888 runtime= 994.42 359.19  
[2023/6/5 10:35:04]  19:17:46  current freq=  528000
[2023/6/5 10:35:05] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:35:05]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:35:05]  2  0      0 438344   4268  30128    0    0    30     2  117  213  2 62 36  0  0
[2023/6/5 10:35:06]  1  0      0 438320   4268  30128    0    0     0     0  133  137  5 95  0  0  0
[2023/6/5 10:35:07]  1  0      0 438320   4268  30128    0    0     0     0  123  126  4 96  0  0  0
[2023/6/5 10:35:17] ------------------------------------------------------------------------
[2023/6/5 10:35:17] 
[2023/6/5 10:35:17]  imx6ul platform test 79 begining!
[2023/6/5 10:35:17]   19:17:58  current temperature= 50.888 runtime= 1006.73 359.19  
[2023/6/5 10:35:17]  19:17:58  current freq=  528000
[2023/6/5 10:35:17] procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
[2023/6/5 10:35:17]  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
[2023/6/5 10:35:17]  2  0      0 438316   4276  30128    0    0    29     2  117  212  2 62 36  0  0
[2023/6/5 10:35:18]  1  0      0 438320   4276  30128    0    0     0     0  138  138  2 98  0  0  0
[2023/6/5 10:35:19]  1  0      0 438320   4276  30128    0    0     0     0  122  122  3 97  0  0  0

好了就写到这里。

你可能感兴趣的:(shell脚本编程,嵌入式系统,笔记,bash,linux)