最近做一个项目,实际是提升linux kernel当中swap算法的性能,使之能匹配上SSD或者更快存储设备。传统的swap算法是针对HDD的,HDD在读写速度上最快约100M左右吧,而SSD或者其他快速设备的读写速度能达到至少500M。所以,必须先研究一下swap。
目前的实验测试方法是把ram做成swap分区,来模拟SSD之类的快速存储设备。
有两种方法。一、将ram直接设为swap分区。二、将ram做成scsi disk,再将该disk设为swap分区。
一、将ram直接设为swap分区。
系统启动时会分配16个默认的ram, ram0--ram15。大小也是固定的,只在需要时才会分配实际的内存给它,平时不用时,大小为0。如果需要修改,(1)改/boot/grub/grub.cfg文件,加入ramdisk_size=N这个参数。重启后生效。(2)若CONFIG_BLK_DEV_RAM=m,可以通过加载模块的时候定大小和数量。
假设将/dev/ram0设为swap分区:
mkswap /dev/ram0
swapoff -a
swapon /dev/ram0
二、将ram做成scsi disk,再将该disk设为swap分区。
这种做法,需要内核选项中将CONFIG_SCSI_DEBUG=m。
modprobe scsi_debug dev_size_mb=1024(1GB大小)
lsscsi可查看新增的scsi disk的设备名称,如/dev/sdc
mkswap /dev/sdc
swapoff -a
swapon /dev/sdc
这个模块只能一次有效,如果需要改变scsi disk大小,需要重新加载模块。