| CPU 效能 分析工具 : vmstat ps sar time strace pstree top Memory效能分析工具: vmstat strace top ipcs ipcrm cat /proc/meminfo cat /proc/slabinfo cat /proc//maps I/O效能分析工具: vmstat ipstat repquota quotacheck Network效能分析工具: ifconfig ethereal tethereal iptraf iwconfig nfsstat mrtg ntop netstat cat /proc/sys/net Linux 效能調優工具 當通過上述工具及命令 ,我們發現了應用 的效能瓶頸以後,我們可以通過以下工具或者命令來進行效能的調整。
CPU效能調優工具: nice / renic sysctl Memory效能調優工具: swapon ulimit sysctl I/O效能調優工具: edquota quoton sysctl boot line: elevator= Network效能調優工具: ifconfig iwconfig sysctl CPU效能調整 當一個系統 的CPU空閑時間或者等待時間小於5%時,我們就可以認為系統的CPU資源耗盡,我們應該對CPU進行效能調整。 CPU效能調整方法: 編輯/proc/sys/kernel/中的檔案 ,修改核心 參數。 #cd /proc/sys/kernel/ # ls /proc/sys/kernel/ acct hotplug panic real-root-dev cad_pid mod probe panic_on_oops sem cap-bound msgmax pid_max shmall core_pattern msgmnb powersave-nap shmmax core_uses_pid msgmni print-fatal-signals shmmni ctrl-alt-del ngroups_max printk suid_dumpable domainname osrelease printk_ratelimit sysrq exec-shield ostype printk_ratelimit_burst tainted exec-shield-randomize overflowgid pty threads-max hostname overflowuid random version 一般可能需要編輯的是pid_max和threads-max,如下: # sysctl kernel.threads-max kernel.threads-max = 8192 # sysctl kernel.threads-max=10000 kernel.threads-max = 10000 Memory效能調整 當一個應用系統的記憶體 資源出現下面的情況時,我們認為需要進行Memory效能調整: 頁面頻繁換進換出; 缺少非活動頁。 例如在使用vmstat命令時發現,memory的cache 使用率非常低,而swap的si或者so則有比較高的資料 值時,應該警惕記憶體的效能問題。
Memory效能調整方法: 1。關閉非核心的服務 進程 。 相關的方法請見CPU效能調整部分。 2。修改/proc/sys/vm/下的系統參數。 # ls /proc/sys/vm/ block_dump laptop_mode nr_pdflush_threads dirty_background_ratio legacy_va_layout overcommit_memory dirty_expire_centisecs lower_zone_protection overcommit_ratio dirty_ratio max_map_count page-cluster dirty_writeback_centisecs min_free_kbytes swappiness hugetlb_shm_group nr_hugepages vfs_cache_pressure # sysctl vm.min_free_kbytes vm.min_free_kbytes = 1024 # sysctl -w vm.min_free_kbytes=2508 vm.min_free_kbytes = 2508 # cat /etc/sysctl.conf … vm.min_free_kbytes=2058 … 3。配置系統的swap交換分區等於或者2倍於實體記憶體。 # free total used free shared buffers cached Mem: 987656 970240 17416 0 63324 742400 -/+ buffers/cache: 164516 823140 Swap: 1998840 150272 1848568 I/O效能調整 系統出現以下情況時,我們認為該系統存在I/O效能問題: 系統等待I/O的時間超過50%; 一個裝置的平均隊列長度大於5。 我們可以通過諸如vmstat等命令,查看CPU的wa等待時間,以得到系統是否存在I/O效能問題的準確資訊。 I/O效能調整方法: 1。修改I/O調度演算法。 Linux已知的I/O調試演算法有4種: deadline - Deadline I/O scheduler as - Anticipatory I/O scheduler cfq - Complete Fair Queuing scheduler noop - Noop I/O scheduler 可以編輯/etc/yaboot.conf檔案修改參數elevator得到。 # vi /etc/yaboot.conf image=/vmlinuz-2.6.9-11.EL label=linux read-only initrd=/initrd-2.6.9-11.EL.img root=/dev/VolGroup00/LogVol00 append="elevator=cfq rhgb quiet" 2。檔案系統調整。 對於檔案系統的調整,有幾個公認的準則: 將I/O負載 相對平均的分配到所有可用的磁碟上; 選擇合適的檔案系統,Linux核心支援reiserfs、ext2、ext3、jfs、xfs等檔案系統; # mkfs -t reiserfs -j /dev/sdc1 檔案系統即使在建立後,本身也可以通過命令調優; tune2fs (ext2/ext3) reiserfstune (reiserfs) jfs_tune (jfs) 3。檔案系統Mount時可加入選項noatime、nodiratime。 # vi /etc/fstab … /dev/sdb1 /backup reiserfs acl, user_xattr, noatime, nodiratime 1 1 4。調整塊裝置的READAHEAD,調大RA值。 [root@overflowuid ~]# blockdev --report RO RA SSZ BSZ StartSec Size Device … rw 256 512 4096 0 71096640 /dev/sdb rw 256 512 4096 32 71094240 /dev/sdb1 [root@overflowuid ~]# blockdev --setra 2048 /dev/sdb1 [root@overflowuid ~]# blockdev --report RO RA SSZ BSZ StartSec Size Device … rw 2048 512 4096 0 71096640 /dev/sdb rw 2048 512 4096 32 71094240 /dev/sdb1 Network效能調整 一個應用系統出現如下情況時,我們認為該系統存在網路 效能問題: 網路介面的輸送量小於期望值; 出現大量的丟包現象; 出現大量的衝突現象。 Network效能調整方法: 1。調整網卡的參數。 # ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Half Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) Link detected: yes #ethtool -s eth0 duplex full #ifconfig eth0 mtu 9000 up 2。增加網路緩衝區和包的隊列。 # cat /proc/sys/net/ipv4/tcp_mem 196608 262144 393216 # cat /proc/sys/net/core/rmem_default 135168 # cat /proc/sys/net/core/rmem_max 131071 # cat /proc/sys/net/core/wmem_default 135168 # cat /proc/sys/net/core/wmem_max 131071 # cat /proc/sys/net/core/optmem_max 20480 # cat /proc/sys/net/core/netdev_max_backlog 300 # sysctl net.core.rmem_max net.core.rmem_max = 131071 # sysctl -w net.core.rmem_max=135168 net.core.rmem_max = 135168 3。調整Webserving。 # sysctl net.ipv4.tcp_tw_reuse net.ipv4.tcp_tw_reuse = 0 # sysctl -w net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_reuse = 1 # sysctl net.ipv4.tcp_tw_recycle net.ipv4.tcp_tw_recycle = 0 # sysctl -w net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_tw_recycle = 1 |