linux设置内存频率

linux设置内存频率,第1张

在Linux系统中,设置内存频率需要在BIOS或UEFI固件中进行。因为内存频率是硬件层面的设置,Linux系统本身并不提供直接设置内存频率的功能。

要设置内存频率,需要在开机时按下相应的按键(通常是DEL、F2或F10),进入BIOS或UEFI设置界面。然后,找到“Advanced”、“DRAM Configuration”或类似的选项,进入内存设置页面。

在内存设置页面中,可以找到内存频率选项。根据内存条的规格和主板的支持情况,选择合适的内存频率设置。设置完成后,保存并退出BIOS或UEFI设置界面,系统将重新启动并应用新的内存频率设置。

请注意,修改内存频率可能会导致系统稳定性问题,应该谨慎 *** 作,并根据需要进行相应的测试和调整。

笔记本的处理器频率,若使用电池,则可对最高频率做适当限制,以达到省电目的;若插入移动电源,则可以解除限制,让处理器能够在其最高频率上运行,以提高性能——这是最基本的电源管理策略。

然而,我的ThinkPad X200却不走寻常路,故意和我对着干。X200搭载Intel Core 2 Duo P8600 双核处理器,设计最高主频为2.40GHz。在使用“performance”调控器(governor),并尽可能将调控器最高频率设为最大值的情况下:

这也太奇怪了吧,笔记本居然会在插电时降频!尽管插电后电量多到用不完,毫无费电之虞,笔记本却仍然认为应该省电;而使用电池时,笔记本却根本不管这些,允许CPU达到最大频率。什么逻辑!

起初,我以为是BIOS中的节能控制设置不当。有一个设置是Intel SpeedStep Technology,这是英特尔的处理器电源管理功能。我尝试将其中针对AC适配器和电池的策略设置为相同的值,结果重启后问题如故;而关闭该功能后,Linux管理CPU频率的 acpi-cpufreq 驱动直接失效,不可行。后来,我又尝试将PCI和PCI-E的省电功能关闭,问题同样如故。

看来,不能靠更改BIOS设置来解决插电降频的问题,只能从系统层面入手了。会不会跟内核有关?对此,我尝试了不同的内核版本,以及使用OpenSUSE安装盘的Shell进行测试,运行以下命令设置调节器为 performance ,读取调控器最大频率(须在Root用户下测试):

结果,插电后仍然降频。由此可排除内核版本和 *** 作系统的问题。

那么,问题到底出在哪里呢?

在Linux中,控制处理器频率的目录是 /sys/devices/system/cpu/cpu*/cpufreq (星号为处理器核心编号),其中包含一系列节点,用于读取或设置处理器频率的参数。主要包括:

注意其中的 bios_limit ,它反映的是BIOS所提供的频率限制值。在本文开头的条件下,使用电池时,其中的值为2400000,而插上电源后该值立刻降到1600000。由此不难得知,是BIOS在限制CPU的频率,X200的BIOS对处理器频率的调控策略简直是弱智!

那么,有什么办法可以打破限制?的确是可以的,Linux系统可以忽略 bios_limit 中BIOS所提供的不合理限制值,让用户可以自由设置理想的频率,使处理器性能的发挥重回正轨。

具体的做法是,调节内核当中的一个参数—— ignore_ppc ,将其值设为1,表示忽略BIOS频率限制:

设置即时生效。这时再插入电源适配器,即可发现频率再也不会被限制在1.6GHz下了。

若要使该设置在每次重启后都能自动应用,可以更改启动配置文件 /etc/default/grub 。在root权限下打开它,找到 GRUB_CMDLINE_LINUX_DEFAULT ,将 processor.ignore_ppc=1 加在值的后面,就像这样:

最后运行

更新启动参数,重启即可生效。

到此,插电降频问题彻底解决,终于可以愉快地享用了!

一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上

#taskset

-p,设定一个已存在的pid,而不是重新开启一个新任务

-c,指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。

1,切换某个进程到指定的cpu上

taskset -cp 3 13290

2,让某程序运行在指定的cpu上

taskset -c 1,2,4-7 tar jcf test.tar.gz test

需要注意的是,taskset -cp 3 13290在设定一个已经存在的pid时,子进程并不会继承父进程的,

因此像tar zcf xxx.tar.gz xxx这样的命令,最好在启动时指定cpu,如果在已经启动的情况下,则需要指定tar调用的gzip进程。

二,使用nice和renice设置程序执行的优先级

格式:nice [-n 数值] 命令

nice 指令可以改变程序执行的优先权等级。指令让使用者在执行程序时,指定一个优先等级,称之为 nice 值。

这个数值从最高优先级的-20到最低优先级的19。负数值只有 root 才有权力使。

一般使用者,也可使用 nice 指令来做执行程序的优先级管理,但只能将nice值越调越高。

可以通过二种方式来给某个程序设定nice值:

1,开始执行程序时给定一个nice值,用nice命令

2,调整某个运行中程序的PID的nice值,用renice命令

通常通过调高nice值来备份,为的是不占用非常多的系统资源。

例:

nice -n 10 tar zcf test.tar.gz test

由nice启动的程序,其子进程会继承父进程的nice值。

查看nice值

# nice -n -6 vim test.txt &

# ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 19427 2637 0 75 0 – 16551 wait pts/600:00:00 bash

4 T 0 21654 19427 0 71 -6 – 23464 finish pts/600:00:00 vim

renice调整运行中程序的nice值

格式:renice [nice值] PID

三,使用ulimit限制cpu占用时间

注意,ulimit 限制的是当前shell进程以及其派生的子进程。因此可以在脚本中调用ulimit来限制cpu使用时间。

例如,限制tar的cpu占用时间,单位秒。

# cat limit_cpu.sh

ulimit -SHt 100

tar test.tar.gz test

如果tar占用时间超过了100秒,tar将会退出,这可能会导致打包不完全,因此不推荐使用ulimit对cpu占用时间进行限制。

另外,通过修改系统的/etc/security/limits配置文件,可以针对用户进行限制。

四,使用程序自带的对cpu使用调整的功能

某些程序自带了对cpu使用调整的功能,比如nginx服务器,通过其配置文件,可以为工作进程指定cpu,如下:

worker_processes 3

worker_cpu_affinity 0001 0010 0100 1000

这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4颗cpu核心,这就使得cpu的使用比较平均到每个核心上。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7321471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存