Ubuntu Optimization
汇总 Ubuntu 的语言、内存、时间、显卡及常用系统优化配置
ubuntu优化
谷歌浏览器汉化
在ubuntu内更改Chrome的语言时,并没有像是windows的以这种语言显示Google Chrome 的选项。最多也只能修改提示翻译的优先语言。没有严格意义上的更改显示语言的选项。
在linux系统上,Chrome的显示语言是根据系统语言变化,一种办法是将系统语言设置成想要显示的语言,但是更多的场景可能是系统语言是英文,应用语言是中文。这里需要通过添加命令行参数来修改 Chrome 的语言。
打开终端,在终端中输入
1
LANGUAGE=zh_cn google-chrome
此时启动Chrome则是以中文显示。若要修改Chrome的默认语言,需要额外添加脚本。
在Chrome的图标文件/usr/share/applications/google-chrome.desktop中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ Desktop Entry ]
Version=1.0
Name=Google Chrome
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
......
Exec=/usr/bin/google-chrome-stable %U
StartupNotify=true
Terminal=false
Icon=google-chrome
Type=Application
Categories=Network;WebBrowser;
......
Chrome通过Exec=/usr/bin/google-chrome-stable运行,但直接添加命令行参数LANGUAGE=zh_cn 的话不仅会无法使用,而且还会导致GNOME桌面找不到Chrome。解决方法如下
新建一个chrome_cn.sh脚本,在脚本中添加如下内容
1
2
#!/bin/bash
LANGUAGE=zh_cn /usr/bin/google-chrome-stable $@
随后将该脚本复制到/usr/bin/路径下,最后将/usr/share/applications/google-chrome.desktop 里的所有/usr/bin/google-chrome-stable换成/usr/bin/chrome_cn.sh,此时启动Chrome界面将是中文。
pip补全
pip提供了自动补全命令,但需要手动开启
1
pip completion --bash >> ~/.bashrc
1
pip completion --zsh >> ~/.zshrc
执行如上命令,重启终端后pip即可进行自动补全
swap分区扩容
在大内存机器(如 64GB)上,默认安装时通常只会分配较小的 swap(例如 2GB)。
虽然物理内存足够,但在以下场景中仍然可能触发 OOM(Out Of Memory):
- 大型 C++ 工程编译(如 OpenCV / ROS 全编译)
- 深度学习训练
- 多进程程序
- Docker 容器叠加
- 数据集加载瞬时暴涨
因此建议配置 适量 swap 作为缓冲区,防止进程被系统直接杀死
查看当前 swap 状态
1
2
free -h
swapon --show
| 物理内存 | 推荐 swap |
|---|---|
| 16GB | 4–8GB |
| 32GB | 8–16GB |
| 64GB | 16GB |
| 128GB+ | 16–32GB |
使用 swapfile 扩容
关闭旧 swap
1
sudo swapoff /swap.img
删除旧文件
1
sudo rm /swap.img
创建新的 swap(示例 16GB)
1
2
3
4
sudo fallocate -l 16G /swap.img
sudo chmod 600 /swap.img
sudo mkswap /swap.img
sudo swapon /swap.img
如果文件名不为swap.img,需要修改/etc/fstab,确保如下行正确
1
/swap.img none swap sw 0 0
启用 zswap
zSwap是Linux内核的一个功能,它为交换页提供了一个压缩的回写缓存,作为一种虚拟内存压缩形式
开启zswap
1
echo 1 | sudo tee /sys/module/zswap/parameters/enabled
永久生效
1
sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 /' /etc/default/grub && \
更新设置
1
sudo update-grub
sysctl 内核优化
内核优化
1
2
3
4
5
6
sudo tee /etc/sysctl.d/99-memory-opt.conf > /dev/null << 'EOF'
vm.swappiness=10
vm.overcommit_memory=1
vm.overcommit_ratio=90
vm.vfs_cache_pressure=50
EOF
更新设置
1
sudo sysctl --system
参数详解:
vm.swappiness
控制系统使用 swap 的“积极程度”。默认为60,数值越小,越倾向使用物理内存。对于开发机器建议调低场景 推荐值 桌面开发 10 服务器 10–20 内存较小机器 30 vm.overcommit_memory
控制内存分配策略值 含义 0 默认(内核估算) 1 允许过度分配 2 严格限制 vm.overcommit_ratio
overcommit_memory=2时才严格生效,表示可分配内存比例(%)vm.vfs_cache_pressure
控制 inode/dentry 缓存回收速度值 行为 100 默认 <100 更保留缓存 >100 更快回收
时间相关
双系统时间错误
安装ntpdate
1
sudo apt-get install ntpdate
更新本地时间
1
sudo ntpdate time.windows.com
更新硬件
1
sudo timedatectl set-local-rtc 1
修改启动等待时间为0
1
sudo vim /etc/grub.d/30_os-prober
修改
1
set timeout=0
1
sudo vim /etc/default/grub
修改
1
GRUB_TIMEOUT=0
最后更新grub.cfg文件,使改动生效
1
sudo update-grub
修改系统重启默认等待时间
1
sudo vim /etc/systemd/system.conf
将#DefaultTimeoutStopSec=90s取消注释,并将DefaultTimeoutStopSec=90s改为DefaultTimeoutStopSec=3s
千万不要修改DefaultTimeoutStartSec,若修改时间太短,时间将不足以支持系统启动。如果不慎修改,在grub引导中选择recovery模式的root终端,用vim将其改回来
显卡相关
查询功率限制
1
nvidia-smi -q | grep 'Power Limit'
设置持久模式
持久模式是一种让GPU驱动程序在系统启动时就加载并一直保持运行的模式,可以避免在每次运行GPU应用程序时重新初始化GPU的开销
1
sudo nvidia-smi -pm 1
开机自启
1
sudo vim /etc/systemd/system/nvidia-persistenced.service
添加如下内容
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=NVIDIA Persistence Mode
[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pm 1
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置
1
sudo systemctl daemon-reload
开机自启
1
2
sudo systemctl enable nvidia-persistenced.service
sudo systemctl start nvidia-persistenced.service
设置功耗
1
sudo nvidia-smi -pl 140
开机自启
1
sudo vim /etc/systemd/system/nvidia-power.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=NVIDIA Power Restrict
[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pl 140
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置
1
sudo systemctl daemon-reload
开机自启
1
2
sudo systemctl enable nvidia-power.service
sudo systemctl start nvidia-power.service
使用.run安装的显卡驱动可能不支持此方法修改功耗
nvidia-powerd
在30系及以后的显卡中,使用了一种新类型的服务nvidia-powerd对显卡功耗进行控制操作
1
sudo nvidia-powerd
开机自启
1
sudo vim /etc/systemd/system/nvidia-powerd.service
添加如下内容
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=NVIDIA Power Daemon
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/nvidia-powerd
[Install]
WantedBy=multi-user.target
重新加载systemd配置
1
sudo systemctl daemon-reload
启用服务
1
sudo systemctl enable nvidia-powerd
