我经常在我的树莓派上编译一些应用程序,编译应用程序时会产生大量缓存文件和大量硬盘IO。由于树莓派使用内存卡当做存储器使用,随机读写速度只有几百K每秒。只要我一开始编译,整个系统为了等待磁盘IO就会假死,而且这样子做非常损伤内存卡。
tmpfs
Linux自带了这种功能,叫做tmpfs。创建它并不会占用物理内存,只有往里面装东西才会占用内存,这点非常人性化。
它使用物理内存进行存储,当物理内存已满时会自动使用交换空间(swap)
使用一下命令挂载一个tmpfs
mount tmpfs -t tmpfs -o size=512M /home/build/tmp
命令中的size选项可以修改成限制的大小,当文件大小大于这个值就会无法写入。
同理也可以编辑/etc/fstab,实现开机自动挂载
tmpfs /home/build/tmp tmpfs size=512M 0 0
警告:挂载的目标文件夹必须存在,否则会挂载失败,然后不停循环重试挂载,导致系统启动失败
性能
我在多个设备上测试了tmpfs的读写性能
设备 | 读速度 | 写速度 |
树莓派 | 351M/s | 265M/s |
旧手机(已root) | 541M/s | 391M/s |
某企鹅云服务器 | 1.2Gb/s | 1.1Gb/s |
可以看到,应该是受限于IO性能还是电源问题,在手机或者树莓派这类嵌入式系统上内存的读写速度都不大,无论怎么说300多兆也比内存卡快多了。
Comments NOTHING