共计 3174 个字符,预计需要花费 8 分钟才能阅读完成。
- 闲置吃灰小鸡看到 user CPU 占用都是 0,而 systemd 的时间占用了 99%。是不是感觉很心疼?
- 由于商家各种(线路 / 稳定性 /sla/ 卡顿等等)问题,只能吃灰便宜商家,感觉很亏?
之前(去年)还有帖子还有用 python 计算 π 来消耗 cpu 时间的,然后不会写,算出来是错的。
使用 python 计算 π 来消耗 cpu 时间毫无数学意义,π 在数学上已经精确比这个计算的高得多,更何况 x86 cpu 的浮点数只能精确到 8 个浮点寄存器组成的浮点寄存器栈精度,而 x64 也只能到达 fpu16 的浮点精度,而普通 cpu 向量寄存器 (XMM,YMM) 也只能精确到 14 或者 15 级。对于达到千万级的精确度来说,基本不可能。
不少朋友使用dd if=/dev/zero of=/dev/null
,来消耗 cpu 时间,(锻炼)。然而这种 cpu 时间的消耗毫科学价值,小鸡的卑微的生命又在碌碌无为中虚度了。
这种无意义的消耗甚至会被某些厂抓辫子
一个吃灰小鸡的剩余寿命应该如何度过?
一个吃灰小鸡最宝贵的东西是剩余生命。
生命剩余对于每个吃灰鸡来说只有一次。
一个吃灰鸡的生命应该是这样度过的:当它回首往事时,不因虚度光阴而悔恨,也不因碌碌无为而羞愧。
这样,在它到期的时候,能够自豪的宣布:“我把整个的时间和精力,都献给了数学上最伟大的事业——为验证千古难题而斗争。
进入正题
写了一个科学计算程序,精度高达: 一千八百四十四 京六千七百四十四 兆零七百三十七 亿零九百五十五 万一千六 百一 十五(18446744073709551615)。用于验证 Goldbach Conjecture(哥德巴赫猜想)。
该程序具有一下特点:
- 性能强悍:验证程序使用 C 语言编写,计算过程能选择后台运行,不用手动挂后台。
- 简便操作:简洁明了的 ctl 命令,方便用户操作和查询结果。
- 状态记录:可以所有 ctl 命令查询后台计算的结果,分析程序的运行情况。
- CPU 限制:能够限制 CPU 的使用大小,确保系统平稳运行。
- 科学之光:发挥计算机真正的作用。如果你验证成功了,你就是下一个陈景润。解决数学上的千古难题,成为一代伟人。
程序 完全开源,可以控制后台进程的随时暂停,继续。不用杀掉程序。可以很方便控制。解决科学计算的烦恼。
关键是程序计算的结果是有意义的,cpu 的时间没有白白牺牲。还能和老板对线:“什么?你不准用户进行科学计算与学习,你 tos 写了吗?。没写!,还不准。啊,你就是阻碍科学发展的罪人!”
项目地址
开源项目 https://github.com/no-passwd/GoldBachCtl 代码完全公开。
当然也可以用于龟壳的锻炼
- 1. 项目安装编译
wget https://github.com/no-passwd/GoldBachCtl/archive/refs/heads/main.zip
unzip main.zip
cd GoldBachCtl-main
gcc GoldBachCtl.c -o GoldBachCtl
然后就可以使用了
./GoldBachCtl start #默认参数启动,后台运行,占用 100% CPU
./GoldBachCtl status #查看科学计算状态
- 2. 当然也可以限制 cpu 为 20%
cpulimit --limit 20 -- ./GoldBachCtl start
这个功能依赖 cpulimit,可以用 apt 安装
通用也可以使用
./GoldBachCtl status #查看科学计算状态
其他命令
- 1. 暂停命令
程序暂停后程序不会终止, 只是停止使用 CPU,程序还在后台,之后可以恢复继续运算。
./GoldBachCtl suspend
暂停后可使用以下命令恢复
./GoldBachCtl resume
- 2. 停止后台程序命令。程序放弃所有数据永久退出。
./GoldBachCtl stop
其他的可以详见项目。程序的 cpu 控制也很好。
其他
对于国内大厂,如:阿里云,腾讯云,华为云等等的大厂。这些吃灰的小鸡可以长时间跑满 cpu,你们明白什么意思吧。
可以直接 ./GoldBachCtl start
启动
如果发现 cpu 长期占用,问就是在研究数学,搞科学计算。tos 也没说不能用云服务器搞研究数学的事啊。
而且这个程序也确实是在科学计算,详情看源码。
对于国外限制 cpu 使用的,使用 cpu 限制模式运行cpulimit --limit 20 -- ./GoldBachCtl start
。这个限制 20%,应该大多数场景都够用了。可以自己调整的。
如cpulimit --limit 50 -- ./GoldBachCtl start
限制 50%
附:程序没有写竞争锁,你应该 ./GoldBachCtl stop
后停止后台计算才 ./GoldBachCtl start
重新启动。只能启动一个后台程序。多个后台进程会竞争的,导致计算的错误。
高级模式
使用 ./GoldBachCtl config
打开调试模式,并且甚至一个较小的上限如:10000(默认为 18446744073709551418)。然后使用 ./GoldBachCtl start
启动程序,你就能直观的看到哥德巴赫猜想的计算过程,类似如下的结果:
9848 = 19 + 9829
9850 = 11 + 9839
9852 = 13 + 9839
9854 = 3 + 9851
9856 = 5 + 9851
9858 = 7 + 9851
9860 = 3 + 9857
9862 = 3 + 9859
9864 = 5 + 9859
9866 = 7 + 9859
9868 = 11 + 9857
9870 = 11 + 9859
9872 = 13 + 9859
9874 = 3 + 9871
9876 = 5 + 9871
9878 = 7 + 9871
9880 = 23 + 9857
9882 = 11 + 9871
9884 = 13 + 9871
9886 = 3 + 9883
9888 = 5 + 9883
9890 = 3 + 9887
9892 = 5 + 9887
9894 = 7 + 9887
9896 = 13 + 9883
9898 = 11 + 9887
9900 = 13 + 9887
9902 = 19 + 9883
9904 = 3 + 9901
9906 = 5 + 9901
9908 = 7 + 9901
9910 = 3 + 9907
9912 = 5 + 9907
9914 = 7 + 9907
9916 = 29 + 9887
9918 = 11 + 9907
9920 = 13 + 9907
9922 = 71 + 9851
9924 = 17 + 9907
9926 = 3 + 9923
9928 = 5 + 9923
9930 = 7 + 9923
9932 = 3 + 9929
9934 = 3 + 9931
9936 = 5 + 9931
9938 = 7 + 9931
9940 = 11 + 9929
9942 = 11 + 9931
9944 = 3 + 9941
9946 = 5 + 9941
9948 = 7 + 9941
9950 = 19 + 9931
9952 = 3 + 9949
9954 = 5 + 9949
9956 = 7 + 9949
9958 = 17 + 9941
9960 = 11 + 9949
9962 = 13 + 9949
9964 = 23 + 9941
9966 = 17 + 9949
9968 = 19 + 9949
9970 = 3 + 9967
9972 = 5 + 9967
9974 = 7 + 9967
9976 = 3 + 9973
9978 = 5 + 9973
9980 = 7 + 9973
9982 = 41 + 9941
9984 = 11 + 9973
9986 = 13 + 9973
9988 = 47 + 9941
9990 = 17 + 9973
9992 = 19 + 9973
9994 = 53 + 9941
9996 = 23 + 9973
9998 = 31 + 9967
10000 = 59 + 9941
你会看到这些数都能被质数分解。
后记
这个程序计算彻底完成的话量挺大的,我跑一个下午都没跑出来。
第一个跑出来的,说不定就是解决哥德巴赫猜想的人,千古伟人,走上人生巅峰。。。说不定呢。
对科学计算没兴趣的,也可以作为锻炼 vps 的新方式。往 cron 里面写入./GoldBachCtl start
,./GoldBachCtl stop
,可以实现自动开启和关闭计算。
当然 suspend 与 resume 也行。与 start、stop 的区别是会驻留后台。
在干什么,别问,问到就是在研究数学。