ããlinuxç³»ç»æ§è½æä¹ä¼å
ããä¸ãåæ
ããæ们å¯ä»¥å¨æç« çå¼å§å°±ååºä¸ä¸ªå表ï¼ååºå¯è½å½±åLinuxæä½ç³»ç»æ§è½çä¸äºè°ä¼åæ°ï¼ä½è¿æ ·åå
¶å®å¹¶æ²¡æä»ä¹ä»·å¼ãå 为æ§è½è°ä¼æ¯ä¸ä¸ªé常å°é¾çä»»å¡ï¼å®è¦æ±å¯¹ç¡¬ä»¶ãæä½ç³»ç»ãååºç¨é½æçç¸å½æ·±å
¥çäºè§£ãå¦ææ§è½è°ä¼é常ç®åçè¯ï¼é£äºæ们è¦ååºçè°ä¼åæ°æ©å°±åå
¥ç¡¬ä»¶çå¾®ç æè
æä½ç³»ç»ä¸äºï¼æ们就没æå¿
è¦å继ç»è¯»è¿ç¯æç« äºãæ£å¦ä¸å¾æ示ï¼æå¡å¨çæ§è½åå°å¾å¤å ç´ çå½±åã
ããå½é¢å¯¹ä¸ä¸ªä½¿ç¨åç¬IDE硬ççï¼æ20000ç¨æ·çæ°æ®åºæå¡å¨æ¶ï¼å³ä½¿æ们使ç¨æ°å¨æ¶é´å»è°æ´I/Oåç³»ç»ä¹æ¯å¾å³æ åçï¼é常ä¸ä¸ªæ°ç驱å¨æè
åºç¨ç¨åºçä¸ä¸ªæ´æ°(å¦SQLä¼å)å´å¯ä»¥ä½¿è¿ä¸ªæå¡å¨çæ§è½å¾å°ææ¾çæåãæ£å¦æ们åé¢æå°çï¼ä¸è¦å¿è®°ç³»ç»çæ§è½æ¯åå¤æ¹é¢å ç´ å½±åçãç解æä½ç³»ç»ç®¡çç³»ç»èµæºçæ¹æ³å°å¸®å©æ们å¨é¢å¯¹é®é¢æ¶æ´å¥½çå¤æåºè¯¥å¯¹åªä¸ªåç³»ç»è¿è¡è°æ´ã
ããäºãLinuxçCPUè°åº¦
ããä»»ä½è®¡ç®æºçåºæ¬åè½é½ååç®åï¼é£å°±æ¯è®¡ç®ã为äºå®ç°è®¡ç®çåè½å°±å¿
é¡»æä¸ä¸ªæ¹æ³å»ç®¡ç计ç®èµæºãå¤çå¨å计ç®ä»»å¡(ä¹è¢«å«å线ç¨æè
è¿ç¨)ãé常æè°¢Ingo Molnarï¼ä»ä¸ºLinuxå
æ ¸å¸¦æ¥äºO(1)CPUè°åº¦å¨ï¼åºå«äºæ§æçO(n)è°åº¦å¨ï¼æ°çè°åº¦å¨æ¯å¨æçï¼å¯ä»¥æ¯æè´è½½åè¡¡ï¼å¹¶ä»¥æå®çé度è¿è¡æä½ã
ããæ°è°åº¦å¨çå¯æ©å±æ§é常好ï¼æ 论è¿ç¨æ°éæè
å¤çå¨æ°éï¼å¹¶ä¸è°åº¦å¨æ¬èº«çç³»ç»å¼éæ´å°ãæ°è°åå¨çç®æ³ä½¿ç¨ä¸¤ä¸ªä¼å
级éåã
ããå¼ç¨
ãã・æ´»å¨è¿è¡éå
ãã・è¿æè¿è¡éå
ããè°åº¦å¨çä¸ä¸ªéè¦ç®æ æ¯æ ¹æ®ä¼å
级æéææå°ä¸ºè¿ç¨åé
CPU æ¶é´çï¼å½åé
å®æåå®è¢«åå¨CPUçè¿è¡éåä¸ï¼é¤äº CPU çè¿è¡éåä¹å¤ï¼è¿æä¸ä¸ªè¿æè¿è¡éåãå½æ´»å¨è¿è¡éåä¸çä¸ä¸ªä»»å¡ç¨å
èªå·±çæ¶é´çä¹åï¼å®å°±è¢«ç§»å¨å°è¿æè¿è¡éåä¸ãå¨ç§»å¨è¿ç¨ä¸ï¼ä¼å¯¹å
¶æ¶é´çéæ°è¿è¡è®¡ç®ãå¦ææ´»å¨è¿è¡éåä¸å·²ç»æ²¡ææ个ç»å®ä¼å
级çä»»å¡äºï¼é£ä¹æåæ´»å¨è¿è¡éååè¿æè¿è¡éåçæéå°±ä¼äº¤æ¢ï¼è¿æ ·å°±å¯ä»¥è®©è¿æä¼å
级å表åææ´»å¨ä¼å
级çå表ãé常交äºå¼è¿ç¨(ç¸å¯¹ä¸å®æ¶è¿ç¨èè¨)é½æä¸ä¸ªè¾é«çä¼å
级ï¼å®å ææ´é¿çæ¶é´çï¼æ¯ä½ä¼å
级çè¿ç¨è·å¾æ´å¤ç计ç®æ¶é´ï¼ä½éè¿è°åº¦å¨èªèº«çè°æ´å¹¶ä¸ä¼ä½¿ä½ä¼å
级çè¿ç¨å®å
¨è¢«é¥¿æ»ãæ°è°åº¦å¨çä¼å¿æ¯æ¾èçæ¹åLinuxå
æ ¸çå¯æ©å±æ§ï¼ä½¿æ°å
æ ¸å¯ä»¥æ´å¥½çå¤çä¸äºæ大éè¿ç¨ã大éå¤çå¨ç»æçä¼ä¸çº§åºç¨ãæ°çO(1)è°åº¦å¨å
å«ä»2.6å
æ ¸ä¸ï¼ä½æ¯ä¹åä¸å
¼å®¹2.4å
æ ¸ã
ããæ°è°åº¦å¨å¦å¤ä¸ä¸ªéè¦çä¼å¿æ¯ä½ç°å¨å¯¹NUMA(non-uniform memory architecture)åSMP(symmetric multithreading processors)çæ¯æä¸ï¼ä¾å¦INTEL@çè¶
线ç¨ææ¯ã
ããæ¹è¿çNUMAæ¯æä¿è¯äºè´è½½åè¡¡ä¸ä¼åçå¨CECsæè
NUMAèç¹ä¹é´ï¼é¤éåçä¸ä¸ªèç¹çè¶
åºè´è½½é度ã
ããä¸ãLinuxçå
åæ¶æ
ããä»å¤©æ们é¢å¯¹éæ©32ä½æä½ç³»ç»è¿æ¯64ä½æä½ç³»ç»çæ
åµã对ä¼ä¸çº§ç¨æ·å®ä»¬ä¹é´æ大çåºå«æ¯64ä½æä½ç³»ç»å¯ä»¥æ¯æ大äº4GBçå
å寻åãä»æ§è½è§åº¦æ¥è®²ï¼æ们éè¦äºè§£32ä½å64ä½æä½ç³»ç»é½æ¯å¦ä½è¿è¡ç©çå
ååèæå
åçæ å°çã
ããå¨ä¸é¢å¾ç¤ºä¸æ们å¯ä»¥çå°64ä½å32ä½Linuxå
æ ¸å¨å¯»åä¸æçæ¾èçä¸åã
ããå¨32ä½æ¶æä¸ï¼æ¯å¦IA-32ï¼Linuxå
æ ¸å¯ä»¥ç´æ¥å¯»åçèå´åªæç©çå
åç第ä¸ä¸ªGB(å¦æå»æä¿çé¨åè¿å©ä¸896MB)ï¼è®¿é®å
åå¿
须被æ å°å°è¿å°äº1GBçæè°ZONE_NORMAL空é´ä¸ï¼è¿ä¸ªæä½æ¯ç±åºç¨ç¨åºå®æçãä½æ¯åé
å¨ZONE_HIGHMEMä¸çå
å页å°å¯¼è´æ§è½çéä½ã
ããå¨å¦ä¸æ¹é¢ï¼64ä½æ¶ææ¯å¦x86-64(ä¹ç§°ä½EM64Tæè
AMD64)ãZONE_NORMAL空é´å°æ©å±å°64GBæè
128GB(å®é
ä¸å¯ä»¥æ´å¤ï¼ä½æ¯è¿ä¸ªæ°å¼åå°æä½ç³»ç»æ¬èº«æ¯æå
å容éçéå¶)ãæ£å¦æ们çå°çï¼ä½¿ç¨64ä½æä½ç³»ç»æ们æé¤äºå ZONE_HIGHMEMé¨åå
å对æ§è½çå½±åçæ
åµã
ããå®é
ä¸ï¼å¨32ä½æ¶æä¸ï¼ç±äºä¸é¢ææè¿°çå
å寻åé®é¢ï¼å¯¹äºå¤§å
åï¼é«è´è½½åºç¨ï¼ä¼å¯¼è´æ»æºæ严éç¼æ
¢çé®é¢ãè½ç¶ä½¿ç¨hugemenæ ¸å¿å¯ç¼è§£ï¼ä½éåx86_64æ¶ææ¯æä½³ç解å³åæ³ã
ããåãèæå
å管ç
ããå 为æä½ç³»ç»å°å
åé½æ å°ä¸ºèæå
åï¼æ以æä½ç³»ç»çç©çå
åç»æ对ç¨æ·ååºç¨æ¥è¯´é常é½æ¯ä¸å¯è§çãå¦ææ³è¦ç解Linuxç³»ç»å
åçè°ä¼ï¼æ们å¿
é¡»äºè§£Linuxçèæå
åæºå¶ãåºç¨ç¨åºå¹¶ä¸åé
ç©çå
åï¼èæ¯åLinuxå
æ ¸è¯·æ±ä¸é¨åæ å°ä¸ºèæå
åçå
å空é´ãå¦ä¸å¾æ示èæå
å并ä¸ä¸å®æ¯æ å°ç©çå
åä¸ç空é´ï¼å¦æåºç¨ç¨åºæä¸ä¸ªå¤§å®¹éç请æ±ï¼ä¹å¯è½ä¼è¢«æ å°å°å¨ç£çåç³»ç»ä¸çswap空é´ä¸ã
ããå¦å¤è¦æå°çæ¯ï¼é常åºç¨ç¨åºä¸ç´æ¥å°æ°æ®åå°ç£çåç³»ç»ä¸ï¼èæ¯åå
¥ç¼ååç¼å²åºä¸ãBdflushå®æ¤è¿ç¨å°å®æ¶å°ç¼åæè
ç¼å²åºä¸çæ°æ®åå°ç¡¬çä¸ã
ããLinuxå
æ ¸å¤çæ°æ®åå
¥ç£çåç³»ç»å管çç£çç¼åæ¯ç´§å¯èç³»å¨ä¸èµ·çãç¸å¯¹äºå
¶ä»çæä½ç³»ç»é½æ¯å¨å
åä¸åé
æå®çä¸é¨åä½ä¸ºç£çç¼åï¼Linuxå¤çå
åæ´å ææï¼é»è®¤æ
åµä¸èæå
å管çå¨åé
ææå¯ç¨å
å空é´ä½ä¸ºç£çç¼åï¼è¿å°±æ¯ä¸ºä»ä¹ææ¶æ们è§å¯ä¸ä¸ªé
ç½®ææ°Gå
åçLinuxç³»ç»å¯ç¨å
ååªæ20MBçåå ã
ããåæ¶Linux使ç¨swap空é´çæºå¶ä¹æ¯ç¸å½é«æççï¼å¦ä¸å¾æ示èæå
å空é´æ¯ç±ç©çå
ååç£çåç³»ç»ä¸çswap空é´å
±åç»æçãå¦æèæå
å管çå¨åç°ä¸ä¸ªå·²ç»åé
å®æçå
åå页已ç»é¿æ¶é´æ²¡æ被è°ç¨ï¼å®å°æè¿é¨åå
åå页移å°swap空é´ä¸ãç»å¸¸æ们ä¼åç°ä¸äºå®æ¤è¿ç¨ï¼æ¯å¦gettyï¼ä¼éç³»ç»å¯å¨ä½æ¯å´å¾å°ä¼è¢«åºç¨å°ãè¿æ¶ä¸ºäºéæ¾æè´µç主å
åèµæºï¼ç³»ç»ä¼å°è¿é¨åå
åå页移å¨å°swap空é´ä¸ãä¸è¿°å°±æ¯Linux使ç¨swap空é´çæºå¶ï¼å½swapååºä½¿ç¨è¶
è¿50%æ¶ï¼å¹¶ä¸æå³çç©çå
åç使ç¨å·²ç»è¾¾å°ç¶é¢äºï¼swap空é´åªæ¯Linuxå
æ ¸æ´å¥½ç使ç¨ç³»ç»èµæºçä¸ç§æ¹æ³ã
ããç®åç解ï¼Swap usageåªè¡¨ç¤ºäºLinux管çå
åçæææ§ã对è¯å«å
åç¶é¢æ¥è¯´ï¼Swap In/Outææ¯ä¸ä¸ªæ¯è¾åæä¹çä¾æ®ï¼å¦æSwap In/Outçå¼é¿æä¿æå¨æ¯ç§200å°300个页é¢é常就表示系ç»å¯è½åå¨å
åçç¶é¢ãä¸é¢çäºä¾æ¯å¥½çç¶æï¼
ããå¼ç¨
ãã# vmstat
ããprocs ââââmemoryââââ- âswapâ ââioâ- âsystemâ â-cpuâ-
ããr b swpd free buff cache si so bi bo in cs us sy id wa
ãã1 0 5696 6904 28192 50496 0 0 88 117 61 29 11 8 80 1
ããäºã模ååçI/Oè°åº¦å¨
ãã就象æ们ç¥éçLinux2.6å
æ ¸ä¸ºæ们带æ¥äºå¾å¤æ°çç¹æ§ï¼è¿å
¶ä¸å°±å
æ¬äºæ°çI/Oè°åº¦æºå¶ãæ§ç2.4å
æ ¸ä½¿ç¨ä¸ä¸ªåä¸çI/Oè°åº¦å¨ï¼2.6 å
æ ¸ä¸ºæ们æä¾äºå个å¯éæ©çI/Oè°åº¦å¨ãå 为Linuxç³»ç»åºç¨å¨å¾å¹¿éçèå´éï¼ä¸åçåºç¨å¯¹I/O设å¤åè´è½½çè¦æ±é½ä¸ç¸åï¼ä¾å¦ä¸ä¸ªç¬è®°æ¬çµèåä¸ä¸ª10000ç¨æ·çæ°æ®åºæå¡å¨å¯¹I/Oçè¦æ±è¯å®æçå¾å¤§çåºå«ã
ããå¼ç¨
ãã(1).Anticipatory
ããanticipatory I/Oè°åº¦å¨å建å设ä¸ä¸ªå设å¤åªæä¸ä¸ªç©ççæ¥æ¾ç£å¤´(ä¾å¦ä¸ä¸ªåç¬çSATA硬ç)ï¼æ£å¦anticipatoryè°åº¦å¨ååä¸æ ·ï¼anticipatoryè°åº¦å¨ä½¿ç¨âanticipatoryâçç®æ³åå
¥ç¡¬çä¸ä¸ªæ¯è¾å¤§çæ°æ®æµä»£æ¿åå
¥å¤ä¸ªéæºçå°çæ°æ®æµï¼è¿æ ·æå¯è½å¯¼è´å I/Oæä½çä¸äºå»¶æ¶ãè¿ä¸ªè°åº¦å¨éç¨äºé常çä¸äºåºç¨ï¼æ¯å¦å¤§é¨åç个人çµèã
ãã(2).Complete Fair Queuing (CFQ)
ããComplete Fair Queuing(CFQ)è°åº¦å¨æ¯Red Flag DC Server 5使ç¨çæ åç®æ³ãCFQè°åº¦å¨ä½¿ç¨QoSçç¥ä¸ºç³»ç»å
çææä»»å¡åé
ç¸åç带宽ãCFQè°åº¦å¨éç¨äºæ大é计ç®è¿ç¨çå¤ç¨æ·ç³»ç»ãå®è¯å¾é¿å
è¿ç¨è¢«é¥¿æ»åå®ç°äºæ¯è¾ä½ç延è¿ã
ãã(3).Deadline
ããdeadlineè°åº¦å¨æ¯ä½¿ç¨deadlineç®æ³ç轮询çè°åº¦å¨ï¼æä¾å¯¹I/Oåç³»ç»æ¥è¿å®æ¶çæä½ï¼deadlineè°åº¦å¨æä¾äºå¾å°ç延è¿åç»´æä¸ä¸ªå¾å¥½çç£çååéãå¦æ使ç¨deadlineç®æ³è¯·ç¡®ä¿è¿ç¨èµæºåé
ä¸ä¼åºç°é®é¢ã
ãã(4).NOOP
ããNOOPè°åº¦å¨æ¯ä¸ä¸ªç®åçè°åº¦ç¨åºå®åªä½æåºæ¬çå并ä¸æåºãä¸æ¡é¢ç³»ç»çå
³ç³»ä¸æ¯å¾å¤§ï¼ä¸»è¦ç¨å¨ä¸äºç¹æ®ç软件ä¸ç¡¬ä»¶ç¯å¢ä¸ï¼è¿äºè½¯ä»¶ä¸ç¡¬ä»¶ä¸è¬é½æ¥æèªå·±çè°åº¦æºå¶å¯¹å
æ ¸æ¯æçè¦æ±å¾å°ï¼è¿å¾éåä¸äºåµå
¥å¼ç³»ç»ç¯å¢ãä½ä¸ºæ¡é¢ç¨æ·æ们ä¸è¬ä¸ä¼éæ©å®ã
ããå
ãç½ç»åç³»ç»
ããæ°çç½ç»ä¸æç¼å(NAPI)对ç½ç»åç³»ç»å¸¦æ¥äºæ¹åï¼æé«äºå¤§æµéç½ç»çæ§è½ãLinuxå
æ ¸å¨å¤çç½ç»å æ æ¶ï¼ç¸æ¯éä½ç³»ç»å ç¨çåé«ååéæ´å
³æ³¨å¯é æ§åä½å»¶è¿ãæ以å¨æäºæ
åµä¸ï¼Linux建ç«ä¸ä¸ªé²ç«å¢æè
æ件ãæå°ãæ°æ®åºçä¼ä¸çº§åºç¨çæ§è½å¯è½ä¼ä½äºç¸åé
ç½®çWindowsæå¡å¨ã
ããå¨ä¼ ç»çå¤çç½ç»å°å
çæ¹å¼ä¸ï¼å¦ä¸å¾èè²ç®å¤´ææè¿°çï¼ä¸ä¸ªä»¥å¤ªç½å°å
å°è¾¾ç½å¡æ¥å£åï¼å¦æMACå°åç¸ç¬¦åä¼è¢«éå°ç½å¡çç¼å²åºä¸ãç½å¡ç¶åå°å°å
移å°æä½ç³»ç»å
æ ¸çç½ç»ç¼å²åºä¸å¹¶ä¸å¯¹CPUååºä¸ä¸ªç¡¬ä¸æï¼CPUä¼å¤çè¿ä¸ªå°å
å°ç¸åºçç½ç»å æ ä¸ï¼å¯è½æ¯ä¸ä¸ªTCP端å£æè
Apacheåºç¨ä¸ã
ããè¿æ¯ä¸ä¸ªå¤çç½ç»å°å
çç®åçæµç¨ï¼ä½ä»ä¸æ们å¯ä»¥çå°è¿ä¸ªå¤çæ¹å¼ç缺ç¹ãæ£å¦æ们çå°çï¼æ¯æ¬¡éåç½ç»å°å
å°è¾¾ç½ç»æ¥å£é½å°å¯¹CPUååºä¸ä¸ªç¡¬ä¸æä¿¡å·ï¼ä¸æCPUæ£å¨å¤ççå
¶ä»ä»»å¡ï¼å¯¼è´åæ¢å¨ä½å对CPUç¼åçæä½ãä½ å¯è½è®¤ä¸ºå½åªæå°éçç½ç»å°å
å°è¾¾ç½å¡çæ
åµä¸è¿å¹¶ä¸æ¯ä¸ªé®é¢ï¼ä½æ¯åå
ç½ç»åç°ä»£çåºç¨å°å¸¦æ¥æ¯ç§éæåä¸ä¸çç½ç»æ°æ®ï¼è¿å°±æå¯è½å¯¹æ§è½é æä¸è¯çå½±åã
ããæ£æ¯å 为è¿ä¸ªæ
åµï¼NAPIå¨å¤çç½ç»é讯çæ¶åå¼å
¥äºè®¡æ°æºå¶ã对第ä¸ä¸ªå°å
ï¼NAPIä»¥ä¼ ç»çæ¹å¼è¿è¡å¤çï¼ä½æ¯å¯¹åé¢çå°å
ï¼ç½å¡å¼å
¥äºPOLL ç轮询æºå¶ï¼å¦æä¸ä¸ªå°å
å¨ç½å¡DMAç¯çç¼åä¸ï¼å°±ä¸å为è¿ä¸ªå°å
ç³è¯·æ°çä¸æï¼ç´å°æåä¸ä¸ªå°å
被å¤çæè
ç¼å²åºè¢«èå°½ãè¿æ ·å°±ææçåå°äºå 为è¿å¤çä¸æCPU对系ç»æ§è½çå½±åãåæ¶ï¼NAPIéè¿å建å¯ä»¥è¢«å¤å¤çå¨æ§è¡ç软ä¸ææ¹åäºç³»ç»çå¯æ©å±æ§ãNAPIå°ä¸ºå¤§éçä¼ä¸çº§å¤å¤çå¨å¹³å°å¸¦æ¥å¸®å©ï¼å®è¦æ±ä¸ä¸ªå¯ç¨NAPIç驱å¨ç¨åºãå¨ä»å¤©å¾å¤é©±å¨ç¨åºé»è®¤æ²¡æå¯ç¨NAPIï¼è¿å°±ä¸ºæ们è°ä¼ç½ç»åç³»ç»çæ§è½æä¾äºæ´å¹¿éç空é´ã
ããä¸ãç解Linuxè°ä¼åæ°
ããå 为Linuxæ¯ä¸ä¸ªå¼æºæä½ç³»ç»ï¼æ以å大éå¯ç¨çæ§è½çæµå·¥å
·ã对è¿äºå·¥å
·çéæ©åå³äºä½ ç个人å好å对æ°æ®ç»èçè¦æ±ãææçæ§è½çæµå·¥å
·é½æ¯æç
§åæ ·çè§åæ¥å·¥ä½çï¼æ以æ è®ºä½ ä½¿ç¨åªç§çæµå·¥å
·é½éè¦ç解è¿äºåæ°ãä¸é¢ååºäºä¸äºéè¦çåæ°ï¼ææçç解å®ä»¬æ¯å¾æç¨å¤çã
ãã(1)å¤çå¨åæ°
ããå¼ç¨
ãã・CPU utilization
ããè¿æ¯ä¸ä¸ªå¾ç®åçåæ°ï¼å®ç´è§çæè¿°äºæ¯ä¸ªCPUçå©ç¨çãå¨xSeriesæ¶æä¸ï¼å¦æCPUçå©ç¨çé¿æ¶é´çè¶
è¿80%ï¼å°±å¯è½æ¯åºç°äºå¤çå¨çç¶é¢ã
ãã・Runable processes
ããè¿ä¸ªå¼æè¿°äºæ£å¨åå¤è¢«æ§è¡çè¿ç¨ï¼å¨ä¸ä¸ªæç»æ¶é´éè¿ä¸ªå¼ä¸åºè¯¥è¶
è¿ç©çCPUæ°éç10åï¼å¦åCPUæ¹é¢å°±å¯è½åå¨ç¶é¢ã
ãã・Blocked
ããæè¿°äºé£äºå 为çå¾
I/Oæä½ç»æèä¸è½è¢«æ§è¡çè¿ç¨ï¼Blockedå¯è½æåºä½ æ£é¢ä¸´I/Oç¶é¢ã
ãã・User time
ããæè¿°äºå¤çç¨æ·è¿ç¨çç¾åæ¯ï¼å
æ¬nice timeãå¦æUser timeçå¼å¾é«ï¼è¯´æç³»ç»æ§è½ç¨å¨å¤çå®é
çå·¥ä½ã
ãã・System time
ããæè¿°äºCPUè±è´¹å¨å¤çå
æ ¸æä½å
æ¬IRQå软件ä¸æä¸é¢çç¾åæ¯ãå¦æsystem timeå¾é«è¯´æç³»ç»å¯è½åå¨ç½ç»æè
驱å¨å æ æ¹é¢çç¶é¢ãä¸ä¸ªç³»ç»é常åªè±è´¹å¾å°çæ¶é´å»å¤çå
æ ¸çæä½ã
ãã・Idle time
ããæè¿°äºCPU空é²çç¾åæ¯ã
ãã・Nice time
ããæè¿°äºCPUè±è´¹å¨å¤çre-nicingè¿ç¨çç¾åæ¯ã
ãã・Context switch
ããç³»ç»ä¸çº¿ç¨ä¹é´è¿è¡äº¤æ¢çæ°éã
ãã・Waiting
ããCPUè±è´¹å¨çå¾
I/Oæä½ä¸çæ»æ¶é´ï¼ä¸blockedç¸ä¼¼ï¼ä¸ä¸ªç³»ç»ä¸åºè¯¥è±è´¹å¤ªå¤çæ¶é´å¨çå¾
I/Oæä½ä¸ï¼å¦åä½ åºè¯¥è¿ä¸æ¥æ£æµI/Oåç³»ç»æ¯å¦åå¨ç¶é¢ã
ãã・Interrupts
ããInterrupts å¼å
æ¬ç¡¬Interruptså软Interruptsï¼ç¡¬Interruptsä¼å¯¹ç³»ç»æ§è½å¸¦æ¥æ´å¤çä¸å©å½±åãé«çInterruptså¼æåºç³»ç»å¯è½åå¨ä¸ä¸ªè½¯ä»¶çç¶é¢ï¼å¯è½æ¯å
æ ¸æè
驱å¨ç¨åºã注æInterruptså¼ä¸å
æ¬CPUæ¶é导è´çä¸æ(ç°ä»£çxServerç³»ç»æ¯ç§1000个 Interruptså¼)ã
ãã(2)å
ååæ°
ããå¼ç¨
ãã・Free memory
ããç¸æ¯å
¶ä»æä½ç³»ç»ï¼Linux空é²å
åçå¼ä¸åºè¯¥å为ä¸ä¸ªæ§è½åèçéè¦ææ ï¼å 为就åæ们ä¹åæå°è¿çï¼Linuxå
æ ¸ä¼åé
大é没æ被使ç¨çå
åä½ä¸ºæ件系ç»çç¼åï¼æ以è¿ä¸ªå¼é常é½æ¯è¾å°ã
ãã・Swap usage
ããè¿ ä¸ªå¼æè¿°äºå·²ç»è¢«ä½¿ç¨çswap空é´ãSwap usageåªè¡¨ç¤ºäºLinux管çå
åçæææ§ã对è¯å«å
åç¶é¢æ¥è¯´ï¼Swap In/Outææ¯ä¸ä¸ªæ¯è¾åæä¹çä¾æ®ï¼å¦æSwap In/Outçå¼é¿æä¿æå¨æ¯ç§200å°300个页é¢é常就表示系ç»å¯è½åå¨å
åçç¶é¢ã
ãã・Buffer and cache
ããè¿ä¸ªå¼æè¿°äºä¸ºæ件系ç»åå设å¤åé
çç¼åãå¨Red Flag DC Server 5çæ¬ä¸,ä½ å¯ä»¥éè¿ä¿®æ¹/proc/sys/vmä¸çpage_cache_tuningæ¥è°æ´ç©ºé²å
åä¸ä½ä¸ºç¼åçæ°éã
ãã・Slabs
ããæè¿°äºå
æ ¸ä½¿ç¨çå
å空é´ï¼æ³¨æå
æ ¸ç页é¢æ¯ä¸è½è¢«äº¤æ¢å°ç£çä¸çã
ãã・Active versus inactive memory
ããæä¾äºå
³äºç³»ç»å
åçactiveå
åä¿¡æ¯ï¼Inactiveå
åæ¯è¢«kswapdå®æ¤è¿ç¨äº¤æ¢å°ç£çä¸ç空é´ã
ãã(3)ç½ç»åæ°
ããå¼ç¨
ãã・Packets received and sent
ããè¿ä¸ªåæ°è¡¨ç¤ºäºä¸ä¸ªæå®ç½å¡æ¥æ¶ååéçæ°æ®å
çæ°éã
ãã・Bytes received and sent
ããè¿ä¸ªåæ°è¡¨ç¤ºäºä¸ä¸ªæå®ç½å¡æ¥æ¶ååéçæ°æ®å
çåèæ°ã
ãã・Collisions per second
ããè¿ä¸ªå¼æä¾äºåçå¨æå®ç½å¡ä¸çç½ç»å²çªçæ°éãæç»çåºç°è¿ä¸ªå¼ä»£è¡¨å¨ç½ç»æ¶æä¸åºç°äºç¶é¢ï¼èä¸æ¯å¨æå¡å¨ç«¯åºç°çé®é¢ãå¨æ£å¸¸é
ç½®çç½ç»ä¸å²çªæ¯é常å°è§çï¼é¤éç¨æ·çç½ç»ç¯å¢é½æ¯ç±hubç»æã
ãã・Packets dropped
ããè¿ä¸ªå¼è¡¨ç¤ºäºè¢«å
æ ¸ä¸¢æçæ°æ®å
æ°éï¼å¯è½æ¯å 为é²ç«å¢æè
æ¯ç½ç»ç¼åç缺ä¹ã
ãã・Overruns
ããOverruns表达äºè¶
åºç½ç»æ¥å£ç¼åç次æ°ï¼è¿ä¸ªåæ°åºè¯¥åpackets droppedå¼èç³»å°ä¸èµ·æ¥å¤ææ¯å¦åå¨å¨ç½ç»ç¼åæè
ç½ç»éåè¿é¿æ¹é¢çç¶é¢ã
ãã・Errors è¿ä¸ªå¼è®°å½äºæ å¿ä¸ºå¤±è´¥ç帧çæ°éãè¿ä¸ªå¯è½ç±é误çç½ç»é
ç½®æè
é¨åç½çº¿æå导è´ï¼å¨éå£åå
以太ç½ç¯å¢ä¸é¨åç½çº¿çæ害æ¯å½±åæ§è½çä¸ä¸ªéè¦å ç´ ã
ãã(4)å设å¤åæ°
ããå¼ç¨
ãã・Iowait
ããCPUçå¾
I/Oæä½æè±è´¹çæ¶é´ãè¿ä¸ªå¼æç»å¾é«é常å¯è½æ¯I/Oç¶é¢æ导è´çã
ãã・Average queue length
ããI/O请æ±çæ°éï¼é常ä¸ä¸ªç£çéåå¼ä¸º2å°3为æä½³æ
åµï¼æ´é«çå¼è¯´æç³»ç»å¯è½åå¨I/Oç¶é¢ã
ãã・Average wait
ããååºä¸ä¸ªI/Oæä½çå¹³åæ¶é´ãAverage waitå
æ¬å®é
I/Oæä½çæ¶é´åå¨I/Oéåéçå¾
çæ¶é´ã
ãã・Transfers per second
ããæè¿°æ¯ç§æ§è¡å¤å°æ¬¡I/Oæä½(å
æ¬è¯»åå)ãTransfers per secondçå¼ä¸kBytes per secondç»åèµ·æ¥å¯ä»¥å¸®å©ä½ 估计系ç»çå¹³åä¼ è¾å大å°ï¼è¿ä¸ªä¼ è¾å大å°é常åç£çåç³»ç»çæ¡å¸¦å大å°ç¸ç¬¦åå¯ä»¥è·å¾æ好çæ§è½ã
ãã・Blocks read/write per second
ããè¿ä¸ªå¼è¡¨è¾¾äºæ¯ç§è¯»åçblocksæ°éï¼å¨2.6å
æ ¸ä¸blocksæ¯1024bytesï¼å¨æ©äºçå
æ ¸çæ¬ä¸blockså¯ä»¥æ¯ä¸åç大å°ï¼ä»512byteså°4kbã
ãã・Kilobytes per second read/write
ããæç
§kb为åä½è¡¨ç¤ºè¯»åå设å¤çå®é
æ°æ®çæ°éã
温馨提示:答案为网友推荐,仅供参考