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即可
)
其中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即可
)
相关文章推荐
- (转) linux I/O优化 磁盘读写参数设置
- linux I/O优化 磁盘读写参数设置
- linux I/O优化 磁盘读写参数设置
- linux I/O优化 磁盘读写参数设置
- Linux I/O优化 磁盘读写参数设置
- Linux 磁盘读写参数设置
- Linux下磁盘读写优化的分析
- linux quota命令参数及用法详解---linux磁盘配额限制设置和查看命令
- Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令
- linux性能分析及调优__cpu 性能瓶颈调优可调性能参数 、内存性能瓶颈可调性能参数(操作系统设置swap的目的、在写程序时、如何使自己的内存不被换出swap,常驻物理内存)、磁盘I/O可调性能参
- LINUX下磁盘参数设置
- linux集群之----------设置磁盘缓冲参数
- Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令
- 高并发-linux-tomcat-JVM优化-设置JVM参数
- linux磁盘读写性能优化
- linux挂载mount参数优化
- linux 读写磁盘扇区
- linux chkconfig命令参数及用法详解--linux系统服务设置命令
- Linux 下 Oracle 内核参数优化
- Linux设置串口波特率等参数