ºìÁªLinuxÃÅ»§
Linux°ïÖú

LinuxÆô¶¯Ê±¼äµÄ¼«ÏÞÓÅ»¯

·¢²¼Ê±¼ä:2007-07-26 11:49:20À´Ô´:ºìÁª×÷Õß:osjulyge
¡¡¡¡ÔÚÉÏ´ÎÍê³ÉǶÈëʽӦÓõÄLinux²Ã¼õºó£¬LinuxµÄÆô¶¯Ê±¼äÈÔÐèÒª 7s ×óÓÒ£¬ËäÈ»ÃãÇ¿¿ÉÒÔ½ÓÊÜ£¬µ«ÈÔȻûÓдﵽÎÒ¸öÈËËù×·ÇóµÄÄ¿±ê----2s ÒÔÄÚ¡£¿öÇÒ£¬ÔÚʵ¼ÊµÄÉÌÓû·¾³ÖУ¬É豸¿É¿¿ÐÔµÄÒªÇó¿ÉÊÇ¡°5¸ö9¡±£¨99.999%£¬¼´OOSʱ¼äµÍÓÚ5·ÖÖÓ/Ä꣩£¬Õâ¾ÍÒâζ×Åÿ¼õÉÙÒ»ÃëÖÓLinuxÆô¶¯£¨É豸¸´Î»£©Ê±¼ä£¬¶Ô¿É¿¿ÐÔ¶¼ÊÇÒ»¸öÃ÷ÏÔµÄÌáÉý¡£

¡¡¡¡ÑÔ¹éÕý´«£¬ÈçºÎ×ÅÊÖ¶ÔLinuxµÄÆô¶¯Ê±¼ä½øÐÐÓÅ»¯ÄØ£¿

¡¡¡¡CELF(The Consumer Electronics Linux Forum)ÂÛ̳ΪÎÒÃÇÖ¸ÒýÁËÒ»¸ö·½Ïò¡£

¡¡¡¡£¨1£©Ê×ÏÈÊǶÔLinuxÆô¶¯¹ý³ÌµÄ¸ú×ٺͷÖÎö£¬Éú³ÉÏêϸµÄÆô¶¯Ê±¼ä±¨¸æ¡£
¡¡¡¡½ÏΪ¼òµ¥¿ÉÐеķ½Ê½ÊÇͨ¹ýPrintkTime¹¦ÄÜΪÆô¶¯¹ý³ÌµÄËùÓÐÄÚºËÐÅÏ¢Ôö¼Óʱ¼ä´Á£¬±ãÓÚ»ã×Ü·ÖÎö¡£PrintkTime×îÔçΪCELFËùÌṩµÄÒ»¸öÄں˲¹¶¡£¬ÔÚºóÀ´µÄKernel 2.6.11°æ±¾ÖÐÕýʽÄÉÈë±ê×¼Äںˡ£ËùÒÔ´ó¼Ò¿ÉÄÜÔÚа汾µÄÄÚºËÖÐÖ±½ÓÆôÓøù¦ÄÜ¡£Èç¹ûÄãµÄLinuxÄÚºËÒòΪijЩԭÒò²»ÄܸüÐÂΪ2.6.11Ö®ºóµÄ°æ±¾£¬ÄÇô¿ÉÒԲο¼CELFÌṩµÄ·½·¨Ð޸ĻòÖ±½ÓÏÂÔØËüÃÇÌṩµÄ²¹¶¡£ºhttp://tree.celinuxforum.org/CelfPubWiki/PrintkTimes

¡¡¡¡¿ªÆôPrintkTime¹¦Äܵķ½·¨ºÜ¼òµ¥£¬Ö»ÐèÔÚÄÚºËÆô¶¯²ÎÊýÖÐÔö¼Ó¡°time¡±¼´¿É¡£µ±È»£¬ÄãÒ²¿ÉÒÔÑ¡ÔñÔÚ±àÒëÄÚºËʱֱ½ÓÖ¸¶¨¡°Kernel hacking¡±Öеġ°Show timing information on printks¡±À´Ç¿ÖÆÿ´ÎÆô¶¯¾ùΪÄÚºËÐÅÏ¢Ôö¼Óʱ¼ä´Á¡£ÕâÒ»ÖÖ·½Ê½»¹ÓÐÁíÒ»¸öºÃ´¦£ºÄã¿ÉÒԵõ½ÄÚºËÔÚ½âÎöÆô¶¯²ÎÊýÇ°ËùÓÐÐÅÏ¢µÄʱ¼ä¡£Òò´Ë£¬ÎÒÑ¡ÔñºóÒ»ÖÖ·½Ê½¡£

¡¡¡¡µ±Íê³ÉÉÏÊöÅäÖúó£¬ÖØÐÂÆô¶¯Linux£¬È»ºóͨ¹ýÒÔÏÂÃüÁÄÚºËÆô¶¯ÐÅÏ¢Êä³öµ½Îļþ£º

¡¡¡¡dmesg -s 131072 > ktime

¡¡¡¡È»ºóÀûÓÃÒ»¸ö½Å±¾¡°show_delta¡±£¨Î»ÓÚLinuxÔ´ÂëµÄscriptsÎļþ¼ÐÏ£©½«ÉÏÊöÊä³öµÄÎļþת»»ÎªÊ±¼äÔöÁ¿ÏÔʾ¸ñʽ£º

¡¡¡¡/usr/src/linux-x.xx.xx/scripts/show_delta ktime > dtime

¡¡¡¡ÕâÑù£¬Äã¾ÍµÃµ½ÁËÒ»·Ý¹ØÓÚLinuxÆô¶¯Ê±¼äÏûºÄµÄÏêϸ±¨¸æ¡£

¡¡¡¡£¨2£©È»ºó£¬ÎÒÃǾÍÀ´Í¨¹ýÕâ·Ý±¨¸æ£¬ÕÒ³öÆô¶¯ÖÐÏà¶ÔºÄʱµÄ¹ý³Ì¡£
¡¡¡¡±ØÐëÃ÷È·Ò»µã£º±¨¸æÖеÄʱ¼äÔöÁ¿ºÍÄÚºËÐÅÏ¢Ö®¼äûÓбØÈ»µÄ¶ÔÓ¦¹Øϵ£¬ÕæÕýµÄʱ¼äÏûºÄ±ØÐë´ÓÄÚºËÔ´ÂëÈëÊÖ·ÖÎö¡£

¡¡¡¡ÕâÒ»µã¶ÔÓÚÉÔ΢ÊìϤ±à³ÌµÄÅóÓÑÀ´Ëµ¶¼²»ÄÑÀí½â£¬ÒòΪʱ¼äÔöÁ¿Ö»ÊÇÁ½´Îµ÷ÓÃprintkÖ®¼äµÄʱ¼ä²îÖµ¡£Í¨³£À´Ëµ£¬ÄÚºËÆô¶¯¹ý³ÌÖÐÔÚÍê³ÉһЩºÄʱµÄÈÎÎñ£¬Èç´´½¨hashË÷Òý¡¢probeÓ²¼þÉ豸µÈ²Ù×÷ºó»áͨ¹ýprintk½«½á¹û´òÓ¡³öÀ´£¬ÕâÖÖÇé¿öÏ£¬Ê±¼äÔöÁ¿ÍùÍù·´Ó³µÄÊÇÐÅÏ¢¶ÔÓ¦¹ý³ÌµÄºÄʱ£»µ«ÓÐЩʱºò£¬ÄÚºËÊÇÔÚµ÷ÓÃprintkÊä³öÐÅÏ¢ºó²Å¿ªÊ¼ÏàÓ¦µÄ¹ý³Ì£¬ÄÇô±¨¸æÖÐÄÚºËÐÅÏ¢ÏàÓ¦¹ý³ÌµÄʱ¼äÏûºÄ¶ÔÓ¦µÄÊÇÆäÏÂÒ»ÐеÄʱ¼äÔöÁ¿£»»¹ÓÐһЩʱºò£¬Ê±¼äÏûºÄÔÚÁËÁ½´ÎÄÚºËÐÅÏ¢Êä³öÖ®¼äµÄij¸ö²»È·¶¨µÄʱ¶Î£¬ÕâÑùʱ¼äÔöÁ¿¿ÉÄܾÍÍêÈ«ÎÞ·¨Í¨¹ýÄÚºËÐÅÏ¢·´Ó¦³öÀ´ÁË¡£

¡¡¡¡ËùÒÔ£¬ÎªÁË׼ȷÅжÏÕæÕýµÄʱ¼äÏûºÄ£¬ÎÒÃÇÐèÒª½áºÏÄÚºËÔ´Âë½øÐзÖÎö¡£±ØÒªµÄʱºò£¬ÀýÈçÉÏÊöµÚÈýÖÖÇéÐÎÏ£¬»¹µÃ×Ô¼ºÔÚÔ´ÂëÖвåÈëprintk´òÓ¡£¬ÒÔ½øÒ»²½È·¶¨Êµ¼ÊµÄʱ¼äÏûºÄ¹ý³Ì¡£

¡¡¡¡ÒÔÏÂÊÇÎÒÉϴβüõºóLinuxÄں˵ÄÆô¶¯·ÖÎö£º

¡¡¡¡ÄÚºËÆô¶¯×Üʱ¼ä£º 6.188s

¡¡¡¡¹Ø¼üµÄºÄʱ²¿·Ö£º
¡¡¡¡1) 0.652s - Timer,IRQ,Cache,Mem PagesµÈºËÐIJ¿·ÖµÄ³õʼ»¯
¡¡¡¡2) 0.611s - ÄÚºËÓëRTCʱÖÓͬ²½
¡¡¡¡3) 0.328s - ¼ÆËãCalibrating Delay£¨4¸öCPUºËÐĵÄ×ÜÏûºÄ£©
¡¡¡¡4) 0.144s - У׼APICʱÖÓ
¡¡¡¡5) 0.312s - У׼Migration Cost
¡¡¡¡6) 3.520s - Intel E1000Íø¿¨³õʼ»¯

¡¡¡¡ÏÂÃ棬½«Õë¶ÔÉÏÊö¸÷²¿·Ö½øÐÐÖðÒ»·ÖÎöºÍ»¯½â¡£

¡¡¡¡£¨3£©½ÓÏÂÀ´£¬½øÐоßÌåµÄ·ÖÏîÓÅ»¯¡£
¡¡¡¡CELFÒѾ­Ìá³öÁËÒ»ÕûÌ×Õë¶ÔÏû·ÑÀàµç×Ó²úÆ·ËùʹÓõÄǶÈëʽLinuxµÄÆô¶¯ÓÅ»¯·½°¸£¬µ«ÊÇÓÉÓÚÃæÏò²»Í¬Ó¦Óã¬ËùÒÔÎÒÃÇÖ»Äܲ¿·Ö½è¼øËûÃǵľ­Ñ飬Õë¶Ô×Ô¼ºÃæ¶ÔµÄÎÊÌâ×÷³ö¾ßÌåµÄ·ÖÎöºÍ³¢ÊÔ¡£

¡¡¡¡Äں˹ؼü²¿·Ö£¨Timer¡¢IRQ¡¢Cache¡¢Mem Pages¡­¡­£©µÄ³õʼ»¯Ä¿Ç°ÔÝʱûÓбȽϿɿ¿ºÍ¿ÉÐеÄÓÅ»¯·½°¸£¬ËùÒÔÔݲ»¿¼ÂÇ¡£

¡¡¡¡¶ÔÓÚÉÏÃæ·ÖÎö½á¹ûÖÐµÄ 2¡¢3 Á½ÏCELFÒÑÓÐרÏîµÄÓÅ»¯·½°¸£º¡°RTCNoSync¡±ºÍ¡°PresetLPJ¡±¡£

¡¡¡¡Ç°Õßͨ¹ýÆÁ±ÎÆô¶¯¹ý³ÌÖÐËù½øÐеÄRTCʱÖÓͬ²½»òÕß½«ÕâÒ»¹ý³Ì·Åµ½Æô¶¯ºó½øÐУ¨ÊÓ¾ßÌåÓ¦ÓöÔʱÖÓ¾«¶ÈµÄÐèÇó¶ø¶¨£©£¬ÊµÏÖÆðÀ´±È½ÏÈÝÒ×£¬µ«ÐèҪΪÄں˴ò²¹¶¡¡£ËƺõCELFÄ¿Ç°µÄ¹¤×÷½ö½öÊÇÈ¥µôÁ˸ùý³Ì£¬¶øûÓÐʵÏÖËùÌáµ½µÄ¡°ÑÓºó¡±´¦ÀíRTCʱÖÓµÄͬ²½¡£¿¼Âǵ½Õâ¸öÔ­Òò£¬Îҵķ½°¸ÖÐÔÝʱûÓÐÒýÈëÕâÒ»ÓÅ»¯£¨±Ï¾¹ËüËù´øÀ´µÄʱ¼äƯÒÆÒѾ­´ïµ½ÁË¡°Ã롱¼¶£©£¬¼ÌÐø¹Ø×¢ÖС£

¡¡¡¡ºóÕßÊÇͨ¹ýÔÚÆô¶¯²ÎÊýÖÐÇ¿ÖÆÖ¸¶¨LPJÖµ¶øÌø¹ýʵ¼ÊµÄ¼ÆËã¹ý³Ì£¬ÕâÊÇ»ùÓÚLPJÖµÔÚÓ²¼þÌõ¼þ²»±äµÄÇé¿öϲ»»á±ä»¯µÄ¿¼ÂÇ¡£ËùÒÔÔÚÕý³£Æô¶¯ºó¼Ç¼ÏÂÄÚºËÐÅÏ¢Öеġ°Calibrating Delay¡±ÊýÖµºó¾Í¿ÉÒÔÔÚÆô¶¯²ÎÊýÖÐÒÔÏÂÃæµÄÐÎʽǿÖÆÖ¸¶¨LPJÖµÁË£º

¡¡¡¡lpj=9600700

¡¡¡¡ÉÏÃæ·ÖÎö½á¹ûÖÐµÄ 4¡¢5 Á½ÏÊÇSMP³õʼ»¯µÄÒ»²¿·Ö£¬Òò´Ë²»ÔÚCELFÑо¿µÄ·¶³ë£¨»òÐí½«À´»áÓвÉÓöàºËµÄMP4³öÏÖ£¿¡­¡­£©£¬Ö»ÄÜ×ÔÁ¦¸üÉúÁË¡£Ñо¿ÁËÒ»ÏÂSMPµÄ³õʼ»¯´úÂ룬·¢ÏÖ¡°Migration Cost¡±ÆäʵҲ¿ÉÒÔÏñ¡°Calibrating Delay¡±²ÉÓÃÔ¤Öõķ½Ê½Ìø¹ýУ׼ʱ¼ä¡£·½·¨ÀàËÆ£¬×îºóÔÚÄÚºËÆô¶¯²ÎÊýÖÐÔö¼Ó£º

¡¡¡¡migration_cost=4000,4000

¡¡¡¡¶øIntelµÄÍø¿¨Çý¶¯³õʼ»¯ÓÅ»¯ÆðÀ´¾Í±È½ÏÂé·³ÁË£¬ËäȻҲÊÇ¿ªÔ´£¬µ«¶ÁÓ²¼þÇý¶¯ÍêÈ«²»±È¶ÁÒ»°ãµÄC´úÂ룬¿öÇÒ½¨Á¢ÔÚÈç´Ë·ôdzÀí½â»ù´¡Éϵġ°ÓÅ»¯¡±ÐÞ¸ÄҲʵÔÚÄѱ£ÍòÈ«¡£»ùÓÚ¿É¿¿ÐԵĿ¼ÂÇ£¬ÎÒ×îÖÕÔÚÁ½´Î³¢ÊÔ¾ù¸æʧ°Üºó·ÅÆúÁËÕâÒ»Ìõ·¡£ÄÇô£¬»»Ò»¸ö˼ά½Ç¶È£¬¿ÉÒÔ½è¼øCELFÔÚ¡°ParallelRCScripts¡±·½°¸Öеġ°²¢Ðгõʼ»¯¡±Ë¼Ï룬½«Íø¿¨Çý¶¯¶ÀÁ¢±àÒëΪģ¿é£¬·ÅÔÚ³õʼ»¯½Å±¾ÖÐÓëÆäËüÄ£¿éºÍÓ¦ÓÃͬ²½¼ÓÔØ£¬´Ó¶øÏû³ýProbe×èÈû¶ÔÆô¶¯Ê±¼äµÄÓ°Ïì¡£¿¼Âǵ½Ó¦Óóõʼ»¯Ò²¿ÉÄÜʹÓõ½ÍøÂ磬¶øÔÚÎÒÃǵÄʵ¼ÊÓ²¼þ»·¾³ÖУ¬Ö»ÓÐeth0Êǹ©Ó¦ÓÃʹÓõģ¬Òò´ËÐèÒª½«µÚÒ»¸öÍø¿Ú³õʼ»¯µÄ0.3sʱ¼ä¼ÆËãÔÚÄÚ¡£

¡¡¡¡³ýÁËÔÚÎҵķ½°¸ÖÐËùÓöµ½µÄÉÏÊö¸÷ÓÅ»¯µã£¬CELF»¹Ìá³öÁËһЩÄã¿ÉÄÜ»á¸ÐÐËȤµÄÓÐÌض¨Õë¶ÔÐÔµÄרÏîÓÅ»¯£¬È磺

¡¡¡¡ShortIDEDelays - Ëõ¶ÌIDE̽²âʱ³¤£¨ÎÒµÄÓ¦Óó¡¾°Öв»°üº¬Ó²ÅÌ£¬ËùÒÔÓò»ÉÏ£©
¡¡¡¡KernelXIP - Ö±½ÓÔÚROM»òFlashÖÐÔËÐÐÄںˣ¨¿¼Âǵ½¼æÈÝÐÔÒòËØ£¬Î´²ÉÓã©
¡¡¡¡IDENoProbe - Ìø¹ýδÁ¬½ÓÉ豸µÄIDE¿Ú
¡¡¡¡OptimizeRCScripts - ÓÅ»¯initrdÖеÄlinuxrc½Å±¾£¨ÎÒ²ÉÓÃÁËBusyBox¸ü¼ò½àµÄlinuxrc£©

¡¡¡¡ÒÔ¼°ÆäËüһЩÉд¦ÓÚÉèÏë½×¶ÎµÄÓÅ»¯·½°¸£¬¸ÐÐËȤµÄÅóÓÑ¿ÉÒÔ·ÃÎÊCELF Developer WikiÁ˽âÏêÇé¡£

¡¡¡¡£¨4£©ÓÅ»¯½á¹û
¡¡¡¡¾­¹ýÉÏÊöרÏîÓÅ»¯£¬ÒÔ¼°¶Ôinittab¡¢rcS½Å±¾µÄÈßÓà²Ã¼õ£¬Õû¸öLinuxÄں˵ÄÆô¶¯Ê±¼ä´ÓÓÅ»¯Ç°µÄ 6.188s Ͻµµ½ÁË×îÖÕµÄ 2.016s£¬Èç¹û²»°üº¬eth0µÄ³õʼ»¯£¬Ôò½öÐè 1.708s£¨eth0³õʼ»¯¿ÉÒÔºÍϵͳÖмä¼þ¼°²¿·ÖÓ¦ÓüÓÔز¢ÐУ©£¬»ù±¾´ïµ½Á˼ȶ¨Ä¿±ê¡£ÓëKexecÅäºÏ£¬¿ÉÒÔ´ó´ó½µµÍÈí¼þ¹ÊÕϵ¼Öµĸ´Î»Ê±¼ä£¬ÓÐЧµÄÌáÉýÁ˲úÆ·µÄ¿É¿¿ÐÔ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ