ΪʲôҪÓнø³ÌÓÅÏȼ¶?
ÕâËÆºõ²»Óùý¶àµÄ½âÊÍ£¬±Ï¾¹×Ô´Ó¶àÈÎÎñ²Ù×÷ϵͳµ®ÉúÒÔÀ´£¬½ø³ÌÖ´ÐÐÕ¼ÓÃcpuµÄÄÜÁ¦¾ÍÊÇÒ»¸ö±ØÐëÒª¿ÉÒÔÈËΪ¿ØÖƵÄÊÂÇé¡£ÒòΪÓеĽø³ÌÏà¶ÔÖØÒª£¬¶øÓеĽø³ÌÔòûÄÇÃ´ÖØÒª¡£
½ø³ÌÓÅÏȼ¶Æð×÷Óõķ½Ê½´Ó·¢Ã÷ÒÔÀ´»ù±¾Ã»ÓÐʲô±ä»¯£¬ÎÞÂÛÊÇÖ»ÓÐÒ»¸öcpuµÄʱ´ú£¬»¹ÊǶàºËcpuʱ´ú£¬¶¼ÊÇͨ¹ý¿ØÖƽø³ÌÕ¼ÓÃcpuʱ¼äµÄ³¤¶ÌÀ´ÊµÏֵġ£
¾ÍÊÇ˵ÔÚͬһ¸öµ÷¶ÈÖÜÆÚÖУ¬ÓÅÏȼ¶¸ßµÄ½ø³ÌÕ¼ÓõÄʱ¼ä³¤Ð©£¬¶øÓÅÏȼ¶µÍµÄ½ø³ÌÕ¼ÓõĶÌЩ¡£
Çë´ó¼ÒÕæµÄ²»Òª»ìÏýÁËϵͳÖеÄÕâÁ½¸ö¸ÅÄnice(NI)ºÍpriority(PR)£¬ËûÃÇÓÐ×Åǧ˿ÍòÂÆµÄ¹ØÏµ£¬µ«¶ÔÓÚµ±Ç°µÄLinuxϵͳÀ´Ëµ£¬ËüÃDz¢²»ÊÇͬһ¸ö¸ÅÄî¡£
ÎÒÃÇ¿´Õâ¸öÃüÁ

´ó¼ÒÊÇ·ñÕæµÄÃ÷°×ÆäÖÐPRIÁкÍNIÁеľßÌ庬ÒåÓÐÊ²Ã´Çø±ð?
ͬÑùµÄ£¬Èç¹ûÊÇtopÃüÁ

´ó¼ÒÊÇ·ñ¸ãÇå³þÁËÕâÆäÖÐPRÖµºÍNIÖµµÄ²î±ð?Èç¹ûûÓУ¬ÄÇôÎÒÃÇ¿ÉÒÔÊ×ÏȸãÇå³þʲôÊÇniceÖµ¡£
ʲôÊÇNICEÖµ?
NICEÖµÓ¦¸ÃÊÇÊìϤLinux/UNIXµÄÈ˺ÜÁ˽âµÄ¸ÅÄîÁË£¬ËüÊÇ·´Ó¦Ò»¸ö½ø³Ì¡°ÓÅÏȼ¶¡±×´Ì¬µÄÖµ£¬Æäȡֵ·¶Î§ÊÇ-20ÖÁ19£¬Ò»¹²40¸ö¼¶±ð¡£
Õâ¸öֵԽС£¬±íʾ½ø³Ì¡±ÓÅÏȼ¶¡±Ô½¸ß£¬¶øÖµÔ½´ó¡°ÓÅÏȼ¶¡±Ô½µÍ¡£
ÀýÈ磬ÎÒÃÇ¿ÉÒÔͨ¹ýNICEÃüÁîÀ´¶ÔÒ»¸ö½«ÒªÖ´ÐеÄbashÃüÁî½øÐÐNICEÖµÉèÖ㬷½·¨ÊÇ£º
[root@zorrozou-pc0 zorro]# nice -n 10 bash |
ÕâÑùÎÒ¾ÍÓÖ´ò¿ªÁËÒ»¸öbash£¬²¢ÇÒÆäniceÖµÉèÖÃΪ10£¬¶øÄ¬ÈÏÇé¿öÏ£¬½ø³ÌµÄÓÅÏȼ¶Ó¦¸ÃÊÇ´Ó¸¸½ø³Ì¼Ì³ÐÀ´µÄ£¬Õâ¸öÖµÒ»°ãÊÇ0¡£
ÎÒÃÇ¿ÉÒÔͨ¹ýniceÃüÁîÖ±½Ó²é¿´µ½µ±Ç°shellµÄniceÖµ£º
[root@zorrozou-pc0 zorro]# nice 10 |
¶Ô±ÈÒ»ÏÂÕý³£Çé¿ö£º
[root@zorrozou-pc0 zorro]# exit |
Í˳öµ±Ç°niceֵΪ10µÄbash£¬´ò¿ªÒ»¸öÕý³£µÄbash£¬ÎÒÃDz鿴ÏÂÆä NiceÖµ£º
[root@zorrozou-pc0 zorro]# bash [root@zorrozou-pc0 zorro]# nice 0 |
ÁíÍ⣬ʹÓÃreniceÃüÁî¿ÉÒÔ¶ÔÒ»¸öÕýÔÚÔËÐеĽø³Ì½øÐÐniceÖµµÄµ÷Õû£¬ÎÒÃÇÒ²¿ÉÒÔʹÓñÈÈçtop¡¢psµÈÃüÁî²é¿´½ø³ÌµÄniceÖµ£¬¾ßÌå·½·¨ÎҾͲ»¶à˵ÁË£¬´ó¼Ò¿ÉÒÔ²ÎÔÄÏà¹Øman
page¡£
ÐèÒª´ó¼Ò×¢ÒâµÄÊÇ£¬ÎÒÔÚÕâÀï¶¼ÔÚʹÓÃniceÖµÕâÒ»³ÆÎ½£¬¶ø·ÇÓÅÏȼ¶(priority)Õâ¸ö˵·¨¡£
niceÖµËäÈ»²»ÊÇpriority£¬µ«ÊÇËüȷʵ¿ÉÒÔÓ°Ïì½ø³ÌµÄÓÅÏȼ¶¡£
ÔÚÓ¢ÓïÖУ¬Èç¹ûÎÒÃÇÐÎÈÝÒ»¸öÈËnice£¬ÄÇÒ»°ã˵Ã÷Õâ¸öÈ˵ÄÈËÔµ±È½ÏºÃ¡£Ê²Ã´ÑùµÄÈËÈËÔµºÃ?ÍùÍùÊÇÇ«Èá¢ÓÐÀñòµÄÈË¡£
±ÈÈ磬Äã¸úÒ»¸öniceµÄÈËÒ»ÆðÈ¥³ÔÎç·¹£¬µãÁËÁ½¸öÒ»ÑùµÄ·¹£¬ÏÈÉÏÁËÒ»·Ýºó£¬niceµÄÄÇλһ°ã¶¼»á˵£º¡°ÄãÏȳÔÄãÏȳԣ¡¡±£¬Õâ¾ÍÊÇÈËÔµºÃ£¬ÕâÈËnice£¡µ«ÊÇÈç¹ûÁíÒ»·ÝÉϵĺÜÍí£¬ÄÇôÕâλniceµÄÈ˾ÍÒª¶ö×ÅÁË¡£
Õâ˵Ã÷ʲô?
Ô½niceµÄÈËÇÀÕ¼×ÊÔ´µÄÄÜÁ¦¾ÍÔ½²î£¬¶øÔ½²»niceµÄÈËÇÀÕ¼ÄÜÁ¦¾ÍԽǿ¡£Õâ¾ÍÊÇniceÖµ´óСµÄº¬Ò壬niceÖµÔ½µÍ£¬ËµÃ÷½ø³ÌÔ½²»nice£¬ÇÀÕ¼cpuµÄÄÜÁ¦¾ÍԽǿ£¬ÓÅÏȼ¶¾ÍÔ½¸ß(×÷ÕßÕâ¸ö½âÊÍÌ«ÐÎÏóÁË£¬Ð¡±àÈ̲»×¡ÒªÊÖ¶¯µãÔÞ!!)¡£
ÔÚÔÀ´Ê¹ÓÃO1µ÷¶ÈµÄLinuxÉÏ£¬ÎÒÃÇ»¹»á°ÑniceÖµ½Ð×ö¾²Ì¬ÓÅÏȼ¶£¬ÕâÒ²»ù±¾·ûºÏniceÖµµÄÌØµã£¬¾ÍÊǵ±niceÖµÉ趨ºÃÁËÖ®ºó£¬³ý·ÇÎÒÃÇÓÃreniceÈ¥¸ÄËü£¬·ñÔòËüÊDz»±äµÄ¡£
¶øpriorityµÄÖµÔÚ֮ǰÄں˵ÄO1µ÷¶ÈÆ÷ÉϱíÏÖÊÇ»á±ä»¯µÄ£¬ËùÒÔÒ²½Ð×ö¶¯Ì¬ÓÅÏȼ¶¡£
ʲôÊÇÓÅÏȼ¶ºÍʵʱ½ø³Ì?
ÎÒÃÇÔÙÀ´¿´¿´Ê²Ã´ÊÇpriorityÖµ£¬¾ÍÊÇpsÃüÁîÖп´µ½µÄPRIÖµ»òÕßtopÃüÁîÖп´µ½µÄPRÖµ¡£
±¾ÎÄΪÁËÇø·ÖÕâЩ¸ÅÄÒÔºó£º
ͳһÓÃniceÖµ±íʾNIÖµ£¬»òÕß½Ð×ö¾²Ì¬ÓÅÏȼ¶£¬Ò²¾ÍÊÇÓÃniceºÍreniceÃüÁîÀ´µ÷ÕûµÄÓÅÏȼ¶;
¶øÊµÓÃpriorityÖµ±íʾPRIºÍPRÖµ£¬»òÕ߽ж¯Ì¬ÓÅÏȼ¶¡£
ÎÒÃÇҲͳһ½«¡°ÓÅÏȼ¶¡±Õâ¸ö´ÊµÄ¸ÅÄî¹æ¶¨Îª±íʾpriorityÖµµÄÒâ˼¡£
ÔÚÄÚºËÖУ¬½ø³ÌÓÅÏȼ¶µÄȡֵ·¶Î§ÊÇͨ¹ýÒ»¸öºê¶¨ÒåµÄ£¬Õâ¸öºêµÄÃû³ÆÊÇMAX_PRIO£¬ËüµÄֵΪ140¡£
¶øÕâ¸öÖµÓÖÊÇÓÉÁíÍâÁ½¸öÖµÏà¼Ó×é³ÉµÄ£¬Ò»¸öÊÇ´ú±íniceֵȡֵ·¶Î§µÄNICE_WIDTHºê£¬ÁíÒ»¸öÊÇ´ú±íʵʱ½ø³Ì(realtime)ÓÅÏȼ¶·¶Î§µÄMAX_RT_PRIOºê¡£
˵°×Á˾ÍÊÇ£¬Linuxʵ¼ÊÉÏʵÏÖÁË140¸öÓÅÏȼ¶·¶Î§£¬È¡Öµ·¶Î§ÊÇ´Ó0-139£¬Õâ¸öֵԽС£¬ÓÅÏȼ¶Ô½¸ß¡£niceÖµµÄ-20µ½19£¬Ó³É䵽ʵ¼ÊµÄÓÅÏȼ¶·¶Î§ÊÇ100-139¡£
вúÉú½ø³ÌµÄĬÈÏÓÅÏȼ¶±»¶¨ÒåΪ£º
#define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2) |
ʵ¼ÊÉ϶ÔÓ¦µÄ¾ÍÊÇniceÖµµÄ0¡£
Õý³£Çé¿öÏ£¬ÈκÎÒ»¸ö½ø³ÌµÄÓÅÏȼ¶¶¼ÊÇÕâ¸öÖµ£¬¼´Ê¹ÎÒÃÇͨ¹ýniceºÍreniceÃüÁîµ÷ÕûÁ˽ø³ÌµÄÓÅÏȼ¶£¬ËüµÄȡֵ·¶Î§Ò²²»»á³¬³ö100-139µÄ·¶Î§£¬³ý·ÇÕâ¸ö½ø³ÌÊÇÒ»¸öʵʱ½ø³Ì£¬ÄÇôËüµÄÓÅÏȼ¶È¡Öµ²Å»á±ä³É0-99Õâ¸ö·¶Î§ÖеÄÒ»¸ö¡£
ÕâÀïÒþº¬ÁËÒ»¸öÐÅÏ¢£¬¾ÍÊÇ˵µ±Ç°µÄLinuxÊÇÒ»ÖÖÒѾ֧³Öʵʱ½ø³ÌµÄ²Ù×÷ϵͳ¡£
ʲôÊÇʵʱ²Ù×÷ϵͳ?
ÎÒÃǾͲ»ÔÙÕâÀïÏêϸ½âÊÍÆäº¬ÒåÒÔ¼°ÔÚ¹¤ÒµÁìÓòµÄÓ¦ÓÃÁË£¬ÓÐÐËȤµÄ¿ÉÒԲο¼Ò»ÏÂʵʱ²Ù×÷ϵͳµÄά»ù°Ù¿Æ¡£
¼òµ¥À´Ëµ£¬ÊµÊ±²Ù×÷ϵͳÐèÒª±£Ö¤Ïà¹ØµÄʵʱ½ø³ÌÔڽ϶̵Äʱ¼äÄÚÏìÓ¦£¬²»»áÓнϳ¤µÄÑÓʱ£¬²¢ÇÒÒªÇó×îСµÄÖжÏÑÓʱºÍ½ø³ÌÇл»ÑÓʱ¡£
¶ÔÓÚÕâÑùµÄÐèÇó£¬Ò»°ãµÄ½ø³Ìµ÷¶ÈËã·¨£¬ÎÞÂÛÊÇO1»¹ÊÇCFS¶¼ÊÇÎÞ·¨Âú×ãµÄ£¬ËùÒÔÄÚºËÔÚÉè¼ÆµÄʱºò£¬½«ÊµÊ±½ø³Ìµ¥¶ÀÓ³ÉäÁË100¸öÓÅÏȼ¶£¬ÕâЩÓÅÏȼ¶¶¼Òª¸ßÓÚÕý³£½ø³ÌµÄÓÅÏȼ¶(niceÖµ)£¬¶øÊµÊ±½ø³ÌµÄµ÷¶ÈËã·¨Ò²²»Í¬£¬ËüÃDzÉÓøü¼òµ¥µÄµ÷¶ÈËã·¨À´¼õÉÙµ÷¶È¿ªÏú¡£
×ܵÄÀ´Ëµ£¬LinuxϵͳÖÐÔËÐеĽø³Ì¿ÉÒÔ·Ö³ÉÁ½Àࣺ
ʵʱ½ø³Ì
·Çʵʱ½ø³Ì
ËüÃǵÄÖ÷񻂿±ð¾ÍÊÇͨ¹ýÓÅÏȼ¶À´Çø·ÖµÄ¡£
ËùÓÐÓÅÏȼ¶ÖµÔÚ0-99·¶Î§Äڵ쬶¼ÊÇʵʱ½ø³Ì£¬ËùÒÔÕâ¸öÓÅÏȼ¶·¶Î§Ò²¿ÉÒÔ½Ð×öʵʱ½ø³ÌÓÅÏȼ¶£¬¶ø100-139·¶Î§ÄÚµÄÊÇ·Çʵʱ½ø³Ì¡£
ÔÚϵͳÖпÉÒÔʹÓÃchrtÃüÁîÀ´²é¿´¡¢ÉèÖÃÒ»¸ö½ø³ÌµÄʵʱÓÅÏȼ¶×´Ì¬¡£ÎÒÃÇ¿ÉÒÔÏÈÀ´¿´Ò»ÏÂchrtÃüÁîµÄʹÓãº

ÎÒÃÇÏÈÀ´¹Ø×¢ÏÔʾ³öµÄPolicy options²¿·Ö£¬»á·¢ÏÖϵͳ¸ø¸÷ÖÖ½ø³ÌÌṩÁË5ÖÖµ÷¶È²ßÂÔ¡£
µ«ÊÇÕâÀﲢûÓÐ˵Ã÷µÄÊÇ£¬ÕâÎåÖÖµ÷¶È²ßÂÔÊÇ·Ö±ð¸øÁ½ÖÖ½ø³ÌÓõ쬶ÔÓÚʵʱ½ø³Ì¿ÉÒÔÓõĵ÷¶È²ßÂÔÊÇ£ºSCHED_FIFO¡¢SCHED_RR£¬¶ø¶ÔÓÚ·Çʵʱ½ø³ÌÔòÊÇ£ºSCHED_OTHER¡¢SCHED_OTHER¡¢SCHED_IDLE¡£
ϵͳµÄÕûÌåÓÅÏȼ¶²ßÂÔÊÇ£º
Èç¹ûϵͳÖдæÔÚÐèÒªÖ´ÐеÄʵʱ½ø³Ì£¬ÔòÓÅÏÈÖ´ÐÐʵʱ½ø³Ì¡£
Ö±µ½ÊµÊ±½ø³ÌÍ˳ö»òÕßÖ÷¶¯ÈóöCPUʱ£¬²Å»áµ÷¶ÈÖ´ÐзÇʵʱ½ø³Ì¡£
ʵʱ½ø³Ì¿ÉÒÔÖ¸¶¨µÄÓÅÏȼ¶·¶Î§Îª1-99£¬½«Ò»¸öÒªÖ´ÐеijÌÐòÒÔʵʱ·½Ê½Ö´Ðеķ½·¨Îª£º
[root@zorrozou-pc0 zorro]# chrt 10 bash [root@zorrozou-pc0 zorro]# chrt -p $$ pid 14840's current scheduling policy: SCHED_RR pid 14840's current scheduling priority: 10 |
¿ÉÒÔ¿´µ½£¬Ð´ò¿ªµÄbashÒѾÊÇʵʱ½ø³Ì£¬Ä¬Èϵ÷¶È²ßÂÔΪSCHED_RR£¬ÓÅÏȼ¶Îª10¡£Èç¹ûÏëÐ޸ĵ÷¶È²ßÂÔ£¬¾Í¼Ó¸ö²ÎÊý£º
[root@zorrozou-pc0 zorro]# chrt -f 10 bash [root@zorrozou-pc0 zorro]# chrt -p $$ pid 14843's current scheduling policy: SCHED_FIFO pid 14843's current scheduling priority: 10 |
¸Õ²Å˵¹ý£¬SCHED_RRºÍSCHED_FIFO¶¼ÊÇʵʱµ÷¶È²ßÂÔ£¬Ö»ÄܸøÊµÊ±½ø³ÌÉèÖ᣶ÔÓÚËùÓÐʵʱ½ø³ÌÀ´Ëµ£¬ÓÅÏȼ¶¸ßµÄ(¾ÍÊÇpriorityÊý×ÖСµÄ)½ø³ÌÒ»¶¨»á±£Ö¤ÏÈÓÚÓÅÏȼ¶µÍµÄ½ø³ÌÖ´ÐС£
SCHED_RRºÍSCHED_FIFOµÄµ÷¶È²ßÂÔÖ»Óе±Á½¸öʵʱ½ø³ÌµÄÓÅÏȼ¶Ò»ÑùµÄʱºò²Å»á·¢Éú×÷Óã¬ÆäÇø±ðÒ²ÊǹËÃû˼Ò壺
SCHED_FIFO
ÒÔÏȽøÏȳöµÄ¶ÓÁз½Ê½½øÐе÷¶È£¬ÔÚÓÅÏȼ¶Ò»ÑùµÄÇé¿öÏ£¬ËÏÈÖ´ÐеľÍÏȵ÷¶ÈË£¬³ý·ÇËüÍ˳ö»òÕßÖ÷¶¯ÊÍ·ÅCPU¡£
SCHED_RR
ÒÔʱ¼äƬÂÖתµÄ·½Ê½¶ÔÏàͬÓÅÏȼ¶µÄ¶à¸ö½ø³Ì½øÐд¦Àí¡£Ê±¼äƬ³¤¶ÈΪ100ms¡£
Õâ¾ÍÊÇLinux¶ÔÓÚʵʱ½ø³ÌµÄÓÅÏȼ¶ºÍÏà¹Øµ÷¶ÈËã·¨µÄÃèÊö¡£ÕûÌåºÜ¼òµ¥£¬Ò²ºÜʵÓá£
¶øÏà¶Ô¸üÂé·³µÄÊÇ·Çʵʱ½ø³Ì£¬ËüÃDzÅÊÇLinuxÉϽø³ÌµÄÖ÷Òª·ÖÀà¡£¶ÔÓÚ·Çʵʱ½ø³ÌÓÅÏȼ¶µÄ´¦Àí£¬ÎÒÃÇÊ×ÏÈ»¹ÊÇÒªÀ´½éÉÜÒ»ÏÂËüÃÇÏà¹ØµÄµ÷¶ÈËã·¨£ºO1ºÍCFS¡£
ʲôÊÇO1µ÷¶È?
O1µ÷¶ÈËã·¨ÊÇÔÚLinux 2.6¿ªÊ¼ÒýÈëµÄ£¬µ½Linux 2.6.23Ö®ºóÄں˽«µ÷¶ÈËã·¨Ìæ»»³ÉÁËCFS¡£
ËäÈ»O1Ëã·¨ÒѾ²»Êǵ±Ç°ÄÚºËËùĬÈÏʹÓõĵ÷¶ÈËã·¨ÁË£¬µ«ÊÇÓÉÓÚ´óÁ¿ÏßÉϵķþÎñÆ÷¿ÉÄÜʹÓõÄLinux°æ±¾»¹ÊÇÀϰ汾£¬ËùÒÔÎÒÏàÐźܶà·þÎñÆ÷»¹ÊÇÔÚʹÓÃ×ÅO1µ÷¶ÈÆ÷£¬ÄÇô·ÑÒ»µã¿ÚÉà¼òµ¥½»´úÒ»ÏÂÕâ¸öµ÷¶ÈÆ÷Ò²ÊÇÓÐÒâÒåµÄ¡£
Õâ¸öµ÷¶ÈÆ÷µÄÃû×ÖÖ®ËùÒÔ½Ð×öO1£¬Ö÷ÒªÊÇÒòΪÆäËã·¨µÄʱ¼ä¸´ÔÓ¶ÈÊÇO1¡£
O1µ÷¶ÈÆ÷ÈÔÈ»ÊǸù¾Ý¾µäµÄʱ¼äƬ·ÖÅäµÄ˼·À´½øÐÐÕûÌåÉè¼ÆµÄ¡£
¼òµ¥À´Ëµ£¬Ê±¼äƬµÄ˼·¾ÍÊǽ«CPUµÄÖ´ÐÐʱ¼ä·Ö³ÉһС¶ÎһС¶ÎµÄ£¬¼ÙÈçÊÇ5msÒ»¶Î¡£ÓÚÊǶà¸ö½ø³ÌÈç¹ûÒª¡°Í¬Ê±¡±Ö´ÐУ¬Êµ¼ÊÉϾÍÊÇÿ¸ö½ø³ÌÂÖÁ÷Õ¼ÓÃ5msµÄcpuʱ¼ä£¬¶ø´Ó1sµÄʱ¼ä³ß¶ÈÉÏ¿´£¬ÕâЩ½ø³Ì¾ÍÊÇÔÚ¡°Í¬Ê±¡±Ö´Ðеġ£
µ±È»£¬¶ÔÓÚ¶àºËϵͳÀ´Ëµ£¬¾ÍÊǰÑÿ¸öºËÐͼÕâÑù×ö¾ÍÐÐÁË¡£¶øÔÚÕâÖÖÇé¿öÏ£¬ÈçºÎÖ§³ÖÓÅÏȼ¶ÄØ?
ʵ¼ÊÉϾÍÊǽ«Ê±¼äƬ·ÖÅä³É´óС²»µÈµÄÈô¸ÉÖÖ£¬ÓÅÏȼ¶¸ßµÄ½ø³ÌʹÓôóµÄʱ¼äƬ£¬ÓÅÏȼ¶Ð¡µÄ½ø³ÌʹÓÃСµÄʱ¼äƬ¡£ÕâÑùÔÚÒ»¸öÖÜÆÚ½áËÙºó£¬ÓÅÏȼ¶´óµÄ½ø³Ì¾Í»áÕ¼Óøü¶àµÄʱ¼ä¶øÒò´ËµÃµ½ÌØÊâ´ýÓö¡£
O1Ëã·¨»¹ÓÐÒ»¸ö±È½ÏÌØÊâµÄµØ·½ÊÇ£¬¼´Ê¹ÊÇÏàͬµÄniceÖµµÄ½ø³Ì£¬Ò²»áÔÙ¸ù¾ÝÆäCPUµÄÕ¼ÓÃÇé¿ö½«Æä·Ö³ÉÁ½ÖÖÀàÐÍ£ºCPUÏûºÄÐͺÍIOÏûºÄÐÔ¡£
µäÐ͵ÄCPUÏûºÄÐ͵Ľø³ÌµÄÌØµãÊÇ£¬Ëü×ÜÊÇÒªÒ»Ö±Õ¼ÓÃCPU½øÐÐÔËË㣬·Ö¸øËüµÄʱ¼äƬ×ÜÊǻᱻºÄ¾¡Ö®ºó£¬³ÌÐò²Å¿ÉÄÜ·¢Éúµ÷¶È¡£
±ÈÈç³£¼ûµÄ¸÷ÖÖËãÊýÔËËã³ÌÐò¡£
¶øIOÏûºÄÐ͵ÄÌØµãÊÇ£¬Ëü¾³£Ê±¼äƬûÓкľ¡¾Í×Ô¼ºÖ÷¶¯ÏÈÊÍ·ÅCPUÁË¡£
±ÈÈçvi£¬emacsÕâÑùµÄ±à¼Æ÷¾ÍÊǵäÐ͵ÄIOÏûºÄÐͽø³Ì¡£
ΪʲôҪÕâÑùÇø·ÖÄØ?ÒòΪIOÏûºÄÐ͵Ľø³Ì¾³£ÊǸúÈ˽»»¥µÄ½ø³Ì£¬±ÈÈçshell¡¢±à¼Æ÷µÈ¡£
µ±ÏµÍ³ÖмÈÓÐÕâÖÖ½ø³Ì£¬ÓÖÓÐCPUÏûºÄÐͽø³Ì´æÔÚ£¬²¢ÇÒÆäniceÖµÒ»Ñùʱ£¬¼ÙÉè¸øËüÃÇ·ÖµÄʱ¼äƬ³¤¶ÈÊÇÒ»ÑùµÄ£¬¶¼ÊÇ500ms£¬ÄÇôÈ˵IJÙ×÷¿ÉÄÜ»áÒòΪCPUÏûºÄÐ͵Ľø³ÌÒ»Ö±Õ¼ÓÃCPU¶ø±äµÄ¿¨¶Ù¡£
¿ÉÒÔÏëÏ󣬵±bashÔڵȴýÈËÊäÈëµÄʱºò£¬ÊDz»Õ¼CPUµÄ£¬´ËʱCPUÏûºÄµÄ³ÌÐò»áÒ»Ö±ÔËË㣬¼ÙÉèÿ´Î¶¼·Öµ½500msµÄʱ¼äƬ£¬´ËʱÈËÔÚbashÉÏÇÃÈëÒ»¸ö×Ö·ûµÄʱºò£¬ÄÇôbashºÜ¿ÉÄÜÒªµÈ¸ö¼¸°Ùms²ÅÄܸø³öÏìÓ¦£¬ÒòΪÔÚÈËÇÃÈë×Ö·ûµÄʱºò£¬±ðµÄ½ø³ÌµÄʱ¼äƬºÜ¿ÉÄܲ¢Ã»Óкľ¡£¬ËùÒÔϵͳ²»»áµ÷¶Èbash³Ì¶È½øÐд¦Àí¡£
ΪÁËÌá¸ßIOÏûºÄÐͽø³ÌµÄÏìÓ¦ËÙ¶È£¬ÏµÍ³½«Çø·ÖÕâÁ½Àà½ø³Ì£¬²¢¶¯Ì¬µ÷ÕûCPUÏûºÄµÄ½ø³Ì½«ÆäÓÅÏȼ¶½µµÍ£¬¶øIOÏûºÄÐ͵Ľ«ÆäÓÅÏȼ¶±ä¸ß£¬ÒÔ½µµÍCPUÏûºÄ½ø³ÌµÄʱ¼äƬµÄʵ¼Ê³¤¶È¡£
ÒÑÖªniceÖµµÄ·¶Î§ÊÇ-20-19£¬Æä¶ÔÓ¦priorityÖµµÄ·¶Î§ÊÇ100-139£¬¶ÔÓÚÒ»¸öĬÈÏniceֵΪ0µÄ½ø³ÌÀ´Ëµ£¬Æä³õʼpriorityÖµÓ¦¸ÃÊÇ120£¬Ëæ×ÅÆä²»¶ÏÖ´ÐУ¬Äں˻á¹Û²ì½ø³ÌµÄCPUÏûºÄ״̬£¬²¢¶¯Ì¬µ÷ÕûpriorityÖµ£¬¿Éµ÷ÕûµÄ·¶Î§ÊÇ+-5¡£
¾ÍÊÇ˵£¬×î¸ßÓÅÏȼ¶¿ÉÒÔ±»×Ô¶¯µ÷Õûµ½115£¬×îµÍµ½125¡£ÕâÒ²ÊÇΪʲôniceÖµ½Ð×ö¾²Ì¬ÓÅÏȼ¶£¬¶øpriorityÖµ½Ð×ö¶¯Ì¬ÓÅÏȼ¶µÄÔÒò¡£²»¹ýÕâ¸ö¶¯Ì¬µ÷ÕûµÄ¹¦ÄÜÔÚµ÷¶ÈÆ÷»»³ÉCFSÖ®ºó¾Í²»ÐèÒªÁË£¬ÒòΪCFS»»ÁËÁíÍâÒ»ÖÖCPUʱ¼ä·ÖÅ䷽ʽ£¬Õâ¸öÎÒÃǺóÃæÔÙ˵¡£
ʲôÊÇCFSÍêÈ«¹«Æ½µ÷¶È?
O1ÒѾÊÇÉÏÒ»´úµ÷¶ÈÆ÷ÁË£¬ÓÉÓÚÆä¶Ô¶àºË¡¢¶àCPUϵͳµÄÖ§³ÖÐÔÄܲ¢²»ºÃ£¬²¢ÇÒÄں˹¦ÄÜÉÏÒª¼ÓÈëcgroupµÈÒòËØ£¬LinuxÔÚ2.6.23Ö®ºó¿ªÊ¼ÆôÓÃCFS×÷Ϊ¶ÔÒ»°ãÓÅÏȼ¶(SCHED_OTHER)½ø³Ìµ÷¶È·½·¨¡£
ÔÚÕâ¸öÖØÐÂÉè¼ÆµÄµ÷¶ÈÆ÷ÖУ¬Ê±¼äƬ£¬¶¯Ì¬¡¢¾²Ì¬ÓÅÏȼ¶ÒÔ¼°IOÏûºÄ£¬CPUÏûºÄµÄ¸ÅÄî¶¼²»ÔÙÖØÒª¡£CFS²ÉÓÃÁËÒ»ÖÖȫеķ½Ê½£¬¶ÔÉÏÊö¹¦ÄܽøÐÐÁ˱ȽÏÍêÉÆµÄÖ§³Ö¡£
ÆäÉè¼ÆµÄ»ù±¾Ë¼Â·ÊÇ£ºÎÒÃÇÏëҪʵÏÖÒ»¸ö¶ÔËùÓнø³ÌÍêÈ«¹«Æ½µÄµ÷¶ÈÆ÷¡£
ÓÖÊÇÄǸöÀÏÎÊÌ⣺ÈçºÎ×öµ½ÍêÈ«¹«Æ½?´ð°¸¸úÉÏһƪIOµ÷¶ÈÖÐCFQµÄ˼·ÀàËÆ£º
Èç¹ûµ±Ç°ÓÐn¸ö½ø³ÌÐèÒªµ÷¶ÈÖ´ÐУ¬ÄÇôµ÷¶ÈÆ÷Ó¦¸ÃÔÚÒ»¸ö±È½ÏСµÄʱ¼ä·¶Î§ÄÚ£¬°ÑÕân¸ö½ø³ÌÈ«¶¼µ÷¶ÈÖ´ÐÐÒ»±é£¬²¢ÇÒËüÃÇÆ½·Öcpuʱ¼ä£¬ÕâÑù¾Í¿ÉÒÔ×öµ½ËùÓнø³ÌµÄ¹«Æ½µ÷¶È¡£
ÄÇôÕâ¸ö±È½ÏСµÄʱ¼ä¾ÍÊÇÈÎÒâÒ»¸öR״̬½ø³Ì±»µ÷¶ÈµÄ×î´óÑÓʱʱ¼ä£¬¼´£ºÈÎÒâÒ»¸öR״̬½ø³Ì£¬¶¼Ò»¶¨»áÔÚÕâ¸öʱ¼ä·¶Î§ÄÚ±»µ÷¶ÈÏìÓ¦¡£Õâ¸öʱ¼äÒ²¿ÉÒÔ½Ð×öµ÷¶ÈÖÜÆÚ£¬ÆäÓ¢ÎÄÃû×Ö½Ð×ö£ºsched_latency_ns¡£
CFSµÄÓÅÏȼ¶
µ±È»£¬CFSÖл¹ÐèÒªÖ§³ÖÓÅÏȼ¶¡£ÔÚеÄÌåϵÖУ¬ÓÅÏȼ¶ÊÇÒÔʱ¼äÏûºÄ(vruntimeÔö³¤)µÄ¿ìÂýÀ´¾ö¶¨µÄ¡£
¾ÍÊÇ˵£¬¶ÔÓÚCFSÀ´Ëµ£¬ºâÁ¿µÄʱ¼äÀÛ»ýµÄ¾ø¶ÔÖµ¶¼ÊÇÒ»Ñù¼Í¼ÔÚvruntimeÖе쬵«ÊDz»Í¬ÓÅÏȼ¶µÄ½ø³Ìʱ¼äÔö³¤µÄ±ÈÂÊÊDz»Í¬µÄ£¬¸ßÓÅÏȼ¶½ø³Ìʱ¼äÔö³¤µÄÂý£¬µÍÓÅÏȼ¶Ê±¼äÔö³¤µÄ¿ì¡£
±ÈÈ磬ÓÅÏȼ¶Îª19µÄ½ø³Ì£¬Êµ¼ÊÕ¼ÓÃcpuΪ1Ã룬ÄÇôÔÚvruntimeÖоͼǼ1s¡£µ«ÊÇÈç¹ûÊÇ-20ÓÅÏȼ¶µÄ½ø³Ì£¬ÄÇôËüºÜ¿ÉÄÜʵ¼ÊÕ¼CPUÓÃ10s£¬ÔÚvruntimeÖвŻá¼Í¼1s¡£
CFSÕæÊµÊµÏֵIJ»Í¬niceÖµµÄcpuÏûºÄʱ¼ä±ÈÀýÔÚÄÚºËÖÐÊǰ´ÕÕ¡°Ã¿²îÒ»¼¶cpuÕ¼ÓÃʱ¼ä²î10%×óÓÒ¡±Õâ¸öÔÔòÀ´É趨µÄ¡£
ÕâÀïµÄ´ó¸ÅÒâ˼ÊÇ˵£¬Èç¹ûÓÐÁ½¸öniceֵΪ0µÄ½ø³ÌͬʱռÓÃcpu£¬ÄÇôËüÃÇÓ¦¸ÃÿÈËÕ¼50%µÄcpu£¬Èç¹û½«ÆäÖÐÒ»¸ö½ø³ÌµÄniceÖµµ÷ÕûΪ1µÄ»°£¬ÄÇô´ËʱӦ±£Ö¤ÓÅÏȼ¶¸ßµÄ½ø³Ì±ÈµÍµÄ¶àÕ¼ÓÃ10%µÄcpu£¬¾ÍÊÇniceֵΪ0µÄÕ¼55%£¬niceֵΪ1µÄÕ¼45%¡£ÄÇôËüÃÇÕ¼ÓÃcpuʱ¼äµÄ±ÈÀýΪ55:45¡£
Õâ¸öÖµµÄ±ÈÀýԼΪ1.25¡£¾ÍÊÇ˵£¬ÏàÁÚµÄÁ½¸öniceÖµÖ®¼äµÄcpuÕ¼ÓÃʱ¼ä±ÈÀýµÄ²î±ðÓ¦¸Ã´óԼΪ1.25¡£¸ù¾ÝÕâ¸öÔÔò£¬Äں˶Ô40¸öniceÖµ×öÁËʱ¼ä¼ÆËã±ÈÀýµÄ¶ÔÓ¦¹ØÏµ£¬ËüÔÚÄÚºËÖÐÒÔÒ»¸öÊý×é´æÔÚ£º

¶àCPUµÄCFSµ÷¶ÈÊÇÔõÑùµÄ?
ÔÚÉÏÃæµÄÐðÊöÖУ¬ÎÒÃÇ¿ÉÒÔÈÏΪϵͳÖÐÖ»ÓÐÒ»¸öCPU£¬ÄÇôÏà¹ØµÄµ÷¶È¶ÓÁÐÖ»ÓÐÒ»¸ö¡£
ʵ¼ÊÇé¿öÊÇϵͳÊÇÓжàºËÉõÖÁ¶à¸öCPUµÄ£¬CFS´ÓÒ»¿ªÊ¼¾Í¿¼ÂÇÁËÕâÖÖÇé¿ö£¬Ëü¶Ôÿ¸öCPUºËÐĶ¼Î¬»¤Ò»¸öµ÷¶È¶ÓÁУ¬ÕâÑùÿ¸öCPU¶¼¶Ô×Ô¼ºµÄ¶ÓÁнø³Ìµ÷¶È¼´¿É¡£
ÕâÒ²ÊÇCFS±ÈO1µ÷¶ÈËã·¨¸ü¸ßЧµÄ¸ù±¾ÔÒò£ºÃ¿¸öCPUÒ»¸ö¶ÓÁУ¬¾Í¿ÉÒÔ±ÜÃâ¶ÔÈ«¾Ö¶ÓÁÐʹÓôóÄÚºËËø£¬´Ó¶øÌá¸ßÁ˲¢ÐÐЧÂÊ¡£
µ±È»£¬ÕâÑù×îÖ±½ÓµÄÓ°Ïì¾ÍÊÇCPUÖ®¼äµÄ¸ºÔØ¿ÉÄܲ»¾ù£¬ÎªÁËά³ÖCPUÖ®¼äµÄ¸ºÔؾùºâ£¬CFSÒª¶¨ÆÚ¶ÔËùÓÐCPU½øÐÐload
balance²Ù×÷£¬ÓÚÊǾÍÓпÉÄÜ·¢Éú½ø³ÌÔÚ²»Í¬CPUµÄµ÷¶È¶ÓÁÐÉÏÇл»µÄÐÐΪ¡£
ÕâÖÖ²Ù×÷µÄ¹ý³ÌÒ²ÐèÒª¶ÔÏà¹ØµÄCPU¶ÓÁнøÐÐËø²Ù×÷£¬´Ó¶ø½µµÍÁ˶à¸öÔËÐжÓÁдøÀ´µÄ²¢ÐÐÐÔ¡£
²»¹ý×ܵÄÀ´Ëµ£¬CFSµÄ²¢ÐжÓÁз½Ê½»¹ÊÇÒª±ÈO1µÄÈ«¾Ö¶ÓÁз½Ê½Òª¸ßЧ¡£ÓÈÆäÊÇÔÚCPUºËÐÄÔ½À´Ô½¶àµÄÇé¿öÏ£¬È«¾ÖËøµÄЧÂÊϽµÏÔÖøÔö¼Ó¡£
×îºó
±¾ÎĵÄÄ¿µÄÊÇ´ÓLinuxϵͳ½ø³ÌµÄÓÅÏȼ¶Îª³ö·¢µã£¬Í¨¹ýÁ˽âÏà¹ØµÄ֪ʶµã£¬Ï£Íû´ó¼Ò¶ÔϵͳµÄ½ø³Ìµ÷¶ÈÓиöÕûÌåµÄÁ˽⡣
ÆäÖУ¬ÎÒÃÇÒ²¶ÔCFSµ÷¶ÈËã·¨½øÐÐÁ˱ȽÏÉîÈëµÄ·ÖÎö¡£ÔÚÎҵľÑéÀ´¿´£¬ÕâЩ֪ʶ¶ÔÎÒÃÇÔÚ¹Û²ìϵͳµÄ״̬ºÍÏà¹ØÓÅ»¯µÄʱºò¶¼ÊǷdz£ÓÐÓõġ£
±ÈÈçÔÚʹÓÃtopÃüÁîµÄʱºò£¬NIºÍPRÖµµ½µ×ÊÇʲôÒâ˼?ÀàËÆµÄµØ·½»¹ÓÐpsÃüÁîÖеÄNIºÍPRIÖµ¡¢ulimitÃüÁî-eºÍ-r²ÎÊýµÄÇø±ðµÈµÈ¡£µ±È»£¬Ï£Íû¿´Íê±¾Îĺó£¬ÄÜÈôó¼Ò¶ÔÕâЩÃüÁîÏÔʾµÄÁ˽â¸ü¼ÓÉîÈë¡£
³ý´ËÖ®Í⣬ÎÒÃÇ»¹»á·¢ÏÖ£¬ËäÈ»topÃüÁîÖеÄPRÖµºÍps -lÃüÁîÖеÄPRIÖµµÄº¬ÒåÊÇÒ»ÑùµÄ£¬µ«ÊÇÔÚÓÅÏȼ¶ÏàͬµÄÇé¿öÏ£¬ËüÃÇÏÔʾµÄֵȷ²»Ò»Ñù¡£
ÄÇô£¬ÄãÖªµÀΪʲôËüÃÇÏÔʾ»áÓÐÇø±ðÂð?Õâ¸öÎÊÌâµÄ´ð°¸Áô¸ø´ó¼Ò×Ô¼ºÈ¥Ñ°ÕÒ°É£¡ |