您的位置:首页 > 运维架构 > Linux

Linux I/O优化 磁盘读写参数设置

2014-01-21 17:08 267 查看
cat /proc/meminfo 查看关于页面缓存的信息。
其中Cached只用于缓存页的内存大小。随着写入缓存页,Dirty的值会增加。一旦开始把缓存页写入磁盘,Writeback的值也增加直到写入结束。
MemTotal:        2052440 kB //总内存
MemFree:           50004 kB //空闲内存
Buffers:           19976 kB //给文件的缓冲大小
Cached:           436412 kB //高速缓冲存储器(http://baike.baidu.com/view/496990.htm)使用的大小
SwapCached:        19864 kB //被高速缓冲存储用的交换空间大小
Active:          1144512 kB //活跃使用中的高速缓冲存储器页面文件大小
Inactive:         732788 kB //不经常使用的高速缓冲存储器页面文件大小
Active(anon):     987640 kB //anon:不久
Inactive(anon):   572512 kB
Active(file):     156872 kB
Inactive(file):   160276 kB
Unevictable:           8 kB
Mlocked:               8 kB
HighTotal:       1177160 kB //The total and free amount of memory, in kilobytes, that is not directly mapped into kernel space.
HighFree:           7396 kB // The HighTotal value can vary b
4000
ased onthe type of kernel used.
LowTotal:         875280 kB // The total and free amount of memory, in kilobytes, that is directly mapped into kernel space.  used. 
LowFree:           42608 kB //The LowTotal value can vary based on the type of kernel
SwapTotal:        489940 kB //交换空间总大小
SwapFree:         450328 kB //空闲交换空间
Dirty:               104 kB //等待被写回到磁盘的大小
Writeback:             0 kB //正在被写回的大小
AnonPages:       1408256 kB //未映射的页的大小
Mapped:           131964 kB //设备和文件映射的大小
Slab:              37368 kB //内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
SReclaimable:      14164 kB //可收回slab的大小
SUnreclaim:        23204 kB //不可收回的slab的大小23204+14164=37368
PageTables:        13308 kB //管理内存分页的索引表的大小
NFS_Unstable:          0 kB //不稳定页表的大小
Bounce:                0 kB //bounce:退回
WritebackTmp:          0 kB //
CommitLimit:     1516160 kB
Committed_AS:    2511900 kB
VmallocTotal:     122880 kB //虚拟内存大小
VmallocUsed:       28688 kB //已经被使用的虚拟内存大小
VmallocChunk:      92204 kB
HugePages_Total:       0 //大页面的分配
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10232 kB
DirectMap2M:      899072 kB

Linux用pdflush进程把数据从缓存页写到磁盘,查看有多少个pdflush进程:cat /proc/sys/vm/nr_pdflush_threads

pdflush 的行为受/proc/sys/vm中的参数控制

/proc/sys/vm/dirty_writeback_centisecs(499):1/100秒,多长时间唤醒pdflush将缓存页数据写入磁盘。默认5秒唤醒2个或更多线程。

如果wrteback的时间长于dirty_writeback_centisecs的时间,可能会出问题

pdflush的第一件事是读取

/proc/sys/vm/dirty_expire_centisecs(default 2999)

1/100秒。缓存页里数据的过期时间(旧数据),在下一个周期内被写入磁盘。默认30秒是一个很长的时间。

第二件事是判断内存是否到了要写入磁盘的限额,有参数决定:

/proc/sys/vm/dirty_background_ratio(default 10)

百分值,保留过期页缓存的最大值。是以MmeFree+Cached-Mapped的值为基准的

pdflush 写入磁盘看两个参数:

1,数据再页缓存中是否超出30秒,如果是,标记位脏页缓存(过期页缓存)

2,脏页缓存是否达到内存的10%

以下参数也会影响到pdflush

/proc/sys/vm/dirty_ratio(default 40)

总内存的最大百分比,系统所能拥有的最大脏页缓存的总量。超过这个值,开启pdflush写入磁盘。如果cached增长快于pdflush,那么整个系统在40%的时候遇到I/O瓶颈,所有的I/O都要等待cache被pdflush进磁盘后才能重新开始。

对于有高度写入操作系统

dirty_background_ratio:主要调整参数。如果需要把缓存持续的而不是一下子大量的写入磁盘,降低这个值。

dirty_ratio:第二调整参数

改变值得方法

1.(法一)  vi  /etc/sysctl.conf  

然后修改即可比如

vm.dirty_ratio =  30

sysctl -p  生效(重启有效)

2.(法二)  echo  30 >  /proc/sys/vm/dirty_ratio

echo   30 > /proc/sys/vm/dirty_ratio

这种方法重启无效

Swapping参数

/proc/sys/vm/swappiness

默认。linux倾向于从物理内存映射到磁盘缓存,保持磁盘缓存尽可能大。未用的页缓存会被放进swap区。

数值为0,将会避免使用swapping

100,将会尽量使用swapping,少用swapping会提高程序的响应速度;多用swapping将会提高系统的可用性

如果有大量的写操作,为避免I/O的长时间等待,可以设置:

$ echo 5 > /proc/sys/vm/dirty_background_ratio

$ echo 10 > /proc/sys/vm/dirty_ratio

文件系统数据缓冲需要频繁的内存分配。加大保留内存的值能提升系统速度和稳定。小于8G的内存,保留内存为64M,大于8G的设置为256M

$ echo 65536 > /proc/sys/vm/min_free_kbytes  注 64m



linux查看CPU类型和内存大小命令

1。如何查看CPU类型以及相关特性?

方法一:Linux下CPU相关的参数保存在/proc/cpuinfo文件里,查看文件内容,即可知道CPU相关的技术参数。

方法二:采用命令dmesg|grep CPU可以查看到相关CPU的启动信息查看CPU的位数可以这样getconf LONG_BIT,不是32位就是64位了:)

2。如何查看内存大小以及使用情况?

方法一:直接查看/proc/meminfo文件

方法二:使用free-m命令查看,如下:[root@miix proc]#free-m total used free shared buffers cached Mem:748 738 90 121 304-/ buffers/cache:313 435 Swap:768 0768可以看到总内存为748M,使用了738M,空闲9M,交换空间768M还没使用。其实我的物理内存是768M的,一些内存和显卡共享了。方法三:使用top命令也可以看到实时的内存使用情况。

3。如何查看硬盘型号以及相关参数?方法一:fdisk-l可以看到系统上的磁盘(包括U盘)的分区以及大小相关信息。

方法二:直接查看/proc/partitions文件。方法三:通过命令hdparm-i/dev/hda获取硬盘详细物理参数

4。如何查看网卡相关信息?方法一:ethtool eth0采用此命令可以查看到网卡相关的技术指标(本人测试过不一定所有网卡都支持此命令)ethtool-i eth1加上-i参数查看网卡驱动可以尝试其它参数查看网卡相关技术参数方法二:也可以通过dmesg|grep eth0等看到网卡名字(厂家)等信息通过查看/etc/sysconfig/network-.s/ifcfg-eth0可以看到当前的网卡配置包括IP、网关地址等信息。当然也可以通过ifconfig命令查看。

5。如何查看USB设备相关信息?方法一:其实通过fdisk-l命令可以查看到接入的U盘信息,本人的U盘信息如下:Disk/dev/sda:2012 MB,2012217344 bytes 16 heads,32 sectors/track,7676 cylinders Units=cylinders of 512*512=262144 bytes Device Boot Start End Blocks Id System/dev/sda1*16 7676 1961024 bW95 FAT32 U盘的设备文件是/dev/sda,2G大小,FAT32格式。如果用户登陆的不是Linux图形界面,U盘不会自动挂载上来。此时可以通过手工挂载(mount):mount/dev/sda1
mount_point以上命令将U盘挂载到当前目录的mount_point目录,注意挂的是sda1不是sda。卸载命令是umount mount_point Linux默认没有自带支持NTFS格式磁盘的驱动,但对FAT32支持良好,挂载的时候一般不需要-t vfat参数。如果支持ntfs,对ntfs格式的磁盘分区应使用-t ntfs参数。如果出现乱码情况,可以考虑用-o iocharset=字符集参数。可以通过lsusb命令查看USB设备信息哦:[root@miix tmp]#lsusb Bus 001 Device
001:ID 0000:0000 Bus 002 Device 001:ID 0000:0000 Bus 003 Device 001:ID 0000:0000 Bus 004 Device 002:ID 0951:1613 Kingston Technology Bus 004 Device 001:ID 0000:0000

6。如何查看光盘相关信息?方法一:插入CD光碟后,在本人的RHEL5系统里,光碟文件是/dev/cdrom,因此只需mount/dev/cdrom mount_point即可。[root@miix tmp]#mount/dev/cdrom mount_point mount:block device/dev/cdrom is write-protected,mounting read-only其实仔细看一下,光驱的设备文件是hdc[root@miix tmp]#ls-l/dev/cdrom*lrwxrwxrwx
1root root 301-08 08:54/dev/cdrom-hdc lrwxrwxrwx 1root root 301-08 08:54/dev/cdrom-hdc-hdc因此我们也可以这样mount/dev/hdc mount_point如果光驱里没放入有效光盘,则报错:[root@miix tmp]#mount/dev/hdc mount_point mount:找不到介质

7。如何挂载ISO文件?方法:mount-o loop*.iso mount_point 8。如何查看主板信息?使用命令lspci即可



 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息