• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

工控机上如何优化SSD和调试磁盘IO操作

软件和平台 peyoot 2年前 (2021-11-17) 1090次浏览 0个评论

可以安装iotop,一个类似top的磁盘监控工具来查看磁盘的IO操作。

iotop -oPa

这个命令运行几分钟,你可以看到哪些进程在进行磁盘的读写操作。以此来排查潜在的问题。

通常,固态硬盘或sd卡,我们可以有以下一些优化手段:

1. noatime挂载选项
默认的方式下linux会把文件访问的时间atime做记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,可以用noatime这个挂载选项来避免这个不必要的操作。修改/etc/fstab对应的分区选项,如:

/dev/disk/by-uuid/b530d5f6-f8f2-6645-ad8a-8318c612bba6 / ext4 defaults,noatime 0 1

2. trim优化
Trim指令也叫Disable Delete Notify(禁用删除通知),在文件系统上删除某个文件时候,通常只是在硬盘前的索引区里标记这块文件占用的区域为无效的,在固态硬盘闪存内,数据存储一般是以page(页)为最小单位存储的(典型的为4KB),而128个page组成了一个block(块),数据以页(page)为单位来读取和写入,但却只能以块(Block)为单位来删除。当读取数据或者写入到一个没有被使用过的page上时,固态硬盘的速度是很快的,但是在无效数据区上的话,就比较复杂了,需要许多步骤来完成。GC(Garbagecollection)垃圾回收就是把一个闪存块里的”有效”页数据复制到一个”空白”块里,然后把这个块完全擦除。这样下次数据将要再次写入的时候,可以写入这块被标记的区域。Trim(Discard)的出现主要是为了提高GC的效率以及减少写入放大的发生,最大作用是清空待删除的无效数据。
早期的Linux通常可以在/etc/fstab中用discard挂载选项来支持TRIM,但许多新出来的NVME固态并不推荐这种在线trim的方式,而是建议用 fstrim.timer系统服务。

  • 定期任务

仅当systemd没有提供fstrim.timer服务时你才需要自己设置定时任务。

# crontab -l
@midnight /usr/bin/trim
  • 使用fstrim.timer服务

许多发行版都有提供每周一次的fstrim服务的systemd调用,可以查看其是否存在

sudo systemctl status fstrim.timer

3. 以tmpfs的方式挂载写入频繁的临时目录
如果你有足够大的内侟 ,可以把临时数据目录以及一些频繁写入的cache目录以tmpfs的方式挂载。tmpfs是常驻内存的文件系统,因此不会对磁盘有写入操作。同样地,这是在/etc/fstab中编辑。如:

# SSD tweak: temporary directories as tmpfs
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

4. 避免频繁使用swap空间
一般内存足够大的情况下,没有必要使用swap分区,自从ubuntu 18.04后系统会用一个swap文件来代替分区,因此不再推荐为swap在SSD上单独分个区。可以设置内存占比非常高时才启用swap空间以减少使用。修改/etc/sysctl.conf ,配置一下当内存只剩下10%时才开始启用swap分区。

nano /etc/sysctl.conf
添加或修改vm.swappiness=10

ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:工控机上如何优化SSD和调试磁盘IO操作
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址