[[PageOutline]] = Performance Tuning = == System Performance Tuning : Memory == * Share Memory - 有些程式需要用到比較多 Share Memory (共享記憶體), 如: Kerrighed ([wiki:krg_tuning 2008-03-20 (rock/rider)]) {{{ echo "kernel.shmall = 796917578" >> /etc/sysctl.conf echo "kernel.shmmax = 796917578" >> /etc/sysctl.conf echo "kernel.shmmni = 4096" >> /etc/sysctl.conf }}} == System Performance Tuning : File System == * /etc/security/limits.conf - 每個程序(process)可以開啟檔案的個數(number limits of open files per process) - 像 HDFS 的 !DataNode 就需要調整這種參數([wiki:jazz/10-02-22#Hadoop:HDFS 2010-02-22]) {{{ #!diff --- /etc/security/limits.conf 2010-02-22 11:29:11.000000000 +0800 +++ /etc/security/limits.conf.new 2010-02-22 11:28:33.000000000 +0800 @@ -49,4 +49,6 @@ #ftp - chroot /ftp #@student - maxlogins 4 +* soft nofile 8192 + # End of file }}} * [參考] [http://www.xenoclast.org/doc/benchmark/HTTP-benchmarking-HOWTO/node7.html Increasing the file descriptor limit] == I/O Performance Tuning : NFS == * NFS Tuning - /etc/fstab - 加大 NFS read/write size 可以提升檔案系統的 I/O 效率 ([wiki:krg_tuning 2008-03-20 (rock/rider)]) {{{ 192.168.0.111:/home /home nfs rw,bg,soft,intr,rsize=262144,wsize=262144 0 4 192.168.0.111:/opt /opt nfs ro,bg,soft,intr,rsize=262144,wsize=262144 0 4 192.168.0.111:/usr /usr nfs ro,bg,soft,intr,rsize=262144,wsize=262144 0 4 }}} == I/O Performance Tuning : IOWait == * [wiki:jazz/10-03-31 2010-03-31] : 高 IOWait 有什麼好的解決之道呢?? == Network Performance Tuning == * TCP Tuning - ([wiki:krg_tuning 2008-03-20 (LSI)]) {{{ echo 262144 > /proc/sys/net/core/rmem_default echo 8388608 > /proc/sys/net/core/wmem_max echo 8388608 > /proc/sys/net/core/rmem_max echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmem echo "4096 65536 4194304" > /proc/sys/net/ipv4/tcp_wmem }}} * TCP TIME_WAIT & Reuse - 適用網站伺服器 ([wiki:jazz/Trac_Updates#a2010-03-26 2010-03-26]) {{{ echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout sysctl net.ipv4.tcp_tw_reuse=1 sysctl net.ipv4.tcp_tw_recycle=1 }}} * 如果沒辦法 ping 224.0.0.1 的話,代表 Broadcast ICMP 封包被濾掉了,因為預設 Linux kernel 2.6 是 disable 的。解法如下:([wiki:jazz/09-09-07 2009-09-07]) {{{ echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts }}} {{{ ~# echo "net.ipv4.icmp_echo_ignore_broadcasts = 0" >> /etc/sysctl.conf ~# sysctl -p net.ipv4.ip_forward = 1 net.ipv4.icmp_echo_ignore_broadcasts = 0 }}} * [http://fourdollars.blogspot.com/2009/04/linux-system.html 如何在 Linux System 當中偵測網路線是否有接上?] ([wiki:jazz/09-05-05 2009-05-05]) {{{ $ cat /sys/class/net/eth0/carrier }}} == Power Management == * 啟動 SATA ALPM 電源管理功能 - [http://packages.debian.org/powertop powertop] 提供之建議 {{{ echo min_power > /sys/class/scsi_host/host0/link_power_management_policy }}} * 虛擬機器的 clocksource ([wiki/jazz/Trac_Updates#a2010-02-11 2010-02-11]) {{{ echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource }}} * 直接修改系統參數讓 Linux 休眠 ([wiki:rock/drbl_switch 2010-03-03 (rock)]) {{{ # echo 4 > /proc/acpi/sleep /** 適用 Kernel 2.4 (swsusp)**/ # echo disk > /sys/power/state /** 適用 Kernel 2.4 & 2.6 (swsusp)**/ }}} == Security == * 關於 /proc/sysrq-trigger ([wiki:jazz/09-11-17 2009-11-17]) * [http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Reference_Guide/s2-proc-sysrq-trigger.html Redhat 手冊的說明 - /proc/sysrq-trigger] * 其實除了 CTRL+ALT+DEL 外,Linux 還可以透過 [http://en.wikipedia.org/wiki/SysRq System Request (Sys Rq) 按鍵] 來做一些特殊除錯工作。這個 Sys Rq 鍵,通常跟 Print Screen 鍵做在一起。 * 要啟用這個功能,首先必須確認核心的 CONFIG_MAGIC_SYSRQ 參數是否有 enable。 * [http://en.wikipedia.org/wiki/Magic_SysRq_key 維基百科除了說明 SYSRQ 可以做哪些事情]外,還介紹了[http://julien.danjou.info/sysrqd/ sysrqd]這個軟體,讓管理者可以遠端執行 SYSRQ 的指令。PS.[http://packages.debian.org/sysrqd sysrqd 也有 debian 套件]!! * 關於 /proc/sys/kernel/sysrq ([wiki:jazz/09-11-17 2009-11-17]) * [http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Reference_Guide/s3-proc-sys-kernel.html Redhat 手冊的說明 - /proc/sys/kernel/ 底下的檔案意涵] * [http://lxr.linux.no/#linux+v2.6.31/Documentation/sysrq.txt Linux 核心關於 SysRq 的說明]