关于dd/bs和swap/swappiness

参考资料:
dd介绍:http://wiki.ubuntu-tw.org/index.php?title=Dd

1.首先扩展一个虚拟内存(交换分区):

sudo dd if=/dev/zero of=/swap.disk bs=1M count=1k
sudo mkswap -f swap.disk
sudo swapon /swap.disk

dd命令用于转换和复制文件:convert and copy a file.
它从输入流(if:Input Filestream)读取数据然后交给输出流(of:Output Filestream)重定向到其它文件,磁盘空间或内存。
其中/dec/zero是一个特殊文件:当你读它的时候,它会提供无限的空字符

(Character Stream,ASCII NULL, 0x00; not ASCII character "digit zero", "0", 0x30) 

在创建交换分区所需的磁盘文件时使用dd创建一个固定大小的“空白”文件。bs参数用于指定复制文件时的比特(Bytes)块(Block)大小



2.如何合理设置bs区块大小,才能使新建的swap得到最大化或最优化利用?

dd指令预设为512 bytes:使用小的block会明显地导致拷贝速度变慢。然而,使用大的block則可能会在遇到错误时,block其余部分都被填入zero-bytes。因此,如果你在拷贝一个有问题的装置时增加你的block大小,你可能会遗失较多的data,虽然你可以花较短的时间在尝试读取破损的磁盘。


- 但是必须考虑的几个问题是:物理内存是否充足?硬盘转速如何?磁盘使用是否频繁?磁盘空间是否足够?
比如我的笔记本,处理器性能较强,500G硬盘使用较少,长期开机但极少下载或存储电影等大文件,而且内存有4G,完全足够日常使用。

- 因此我在安装linux时并未设置swap交换分区,以后也可不必设置。我在做上面的测试时也没有带来更快的速度或更短的响应时间。

-所以我推荐整体性能较高的机子可以不设置swap或将bs值设置为10240/1M以上或1024/1K均可,因为实际使用到它的频率很小。

- 但是对于老旧电脑来说,则可以设置为512k或1M左右,可以自己先dd一个较小的文件作为swap来测试性能。
- 此外,借助dd来推送一个较大文件(如5G)来测试IO读写,以衡量硬盘读写以及网络容量性能。


3.那么如何设定swappiness值?

在ubuntu 里面,swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。两个极端,对于ubuntu的默认设置,这个值等于60,建议修改为10。具体这样做:

#查看你的系统里面的swappiness 
cat /proc/sys/vm/swappiness
#不出意外的话,你应该看到是 60
#修改swappiness值为10 
sudo sysctl vm.swappiness=10 
#但这只是临时修改,在你重启系统后会恢复默认的60
#gksudo vim /etc/sysctl.conf 
#在这个文档的最后加上这样一行: 
#vm.swappiness=10 
reboot


附:以下内容来自互联网:

linux2.6的虚拟内存性能有很多调优的方式。其中有一点很重要:swappiness。它被用于在内核释放内存时(即物理内存不够或大量使用时)控制交换分区的使用量。系统默认值为60。由于linux的inode值有读写上限,而交换分区将会占用大量IO读写(影响磁盘性能)。你可以用如下的方式调整swappiness值(必须是root权限)

sysctl -w vm.swappiness=25

如果你的发行版不支持sysctl命令或没有该程序,(你可以直接修改虚拟内存配置)

echo 25 > /proc/sys/vm/swappiness

你可以根据你的应用环境用不同的swappiness值以测试最佳的性能,貌似25是一个被证明的较为合理的数值。
最后,使用sysctl命令更改的只是当前内存中的参数,并没有在实际配置中生效,你还必须将vm.swappiness值加入/etc/sysctl.conf文件中以便在以后的启动中都会加载配置。


结合以上两个问题,就应该大致清楚如何合理的给自己的机子设置交换分区了。


续:

1.删除swap分区:

sudo swapoff /swap.disk
sudo rm /swap.disk

2.在系统启动时自动挂载新建立的swap分区文件:打开文件/etc/fstab并添加如下行到末尾:

#Entry for /swap
/swap(你的swap文件路径)       swap        swap         defaults          0          0

你可能感兴趣的:(linux,swap)