LinuxµÄ¸ßЧµÄÊý¾Ý´«Êä¼¼Êõ-Relay
¡¡¡¡Relay Òª½â¾öµÄÎÊÌâ
¡¡¡¡¶ÔÓÚÈκÎÔÚÄں˹¤×÷µÄ³ÌÐò¶øÑÔ£¬ÈçºÎ°Ñ´óÁ¿µÄµ÷ÊÔÐÅÏ¢´ÓÄں˿ռ䴫Êäµ½Óû§¿Õ¼ä¶¼ÊÇÒ»¸ö´óÂé·³£¬¶ÔÓÚÔËÐÐÖеÄÄں˸üÊÇÈç´Ë¡£·Ç·²ÊǶÔÓÚÄÄЩÓÃÓÚµ÷ÊÔÄÚºËÐÔÄܵŤ¾ß£¬¸üÊÇÈç´Ë¡£
¡¡¡¡¶ÔÓÚÕâÖÖ´óÁ¿Êý¾ÝÐèÒªÔÚÄÚºËÖлº´æ²¢´«Êäµ½Óû§¿Õ¼äÐèÇ󣬺ܶഫͳµÄ·½·¨¶¼Òѵ½´ïÁ˼«ÏÞ£¬ÀýÈçÄں˳ÌÐòÔ±ºÜÊìϤµÄ printk() µ÷ÓᣴËÍ⣬¼ÙÈ粻ͬµÄÄÚºË×Óϵͳ¶¼¿ª·¢×Ô¼ºµÄ»º´æºÍ´«Êä´úÂ룬Ôì³ÉºÜ´óµÄ´úÂëÈßÓ࣬¶øÇÒÒ²´øÀ´Î¬»¤ÉϵÄÀ§ÄÑ¡£
¡¡¡¡ÕâЩ£¬¶¼ÒªÇ󿪷¢Ò»Ì×Äܹ»¸ßЧ¿É¿¿µØ½«Êý¾Ý´ÓÄں˿ռäת·¢µ½Óû§¿Õ¼äµÄϵͳ£¬¶øÇÒÕâ¸öϵͳӦ¸Ã¶ÀÁ¢ÓÚ¸÷¸öµ÷ÊÔ×Óϵͳ¡£ÕâÑù¾Íµ®ÉúÁË RelayFS¡£
¡¡¡¡RelayµÄ·¢Õ¹ÀúÊ·
¡¡¡¡Relay µÄǰÉíÊÇ RelayFS£¬¼´×÷Ϊ Linux µÄÒ»¸öÐÂÐÍÎļþϵͳ¡£2003Äê3Ô£¬RelayFSµÄµÚÒ»¸ö°æ±¾µÄ´úÂë±»¿ª·¢³öÀ´£¬ÔÚ7ÔÂ14ÈÕ£¬µÚÒ»¸öÕë¶Ô2.6Äں˵İ汾Ҳ¿ªÊ¼ÌṩÏÂÔØ¡£¾¹ý¹ã·ºµÄÊÔÓú͸Ľø£¬Ö±µ½2005Äê9Ô£¬RelayFS²Å±»¼ÓÈëmainlineÄÚºË(2.6.14)¡£Í¬Ê±£¬RelayFSÒ²±»ÒÆÖ²µ½2.4ÄÚºËÖС£ÔÚ 2006Äê2Ô£¬´Ó2.6.17¿ªÊ¼£¬RelayFS²»ÔÙ×÷Ϊµ¥¶ÀµÄÎļþϵͳ´æÔÚ£¬¶øÊdzÉΪÄں˵ÄÒ»²¿·Ö¡£ËüµÄÔ´ÂëÒ²´Ófs/Ŀ¼ÏÂ×ªÒÆµ½ kernel/relay.cÖУ¬Ãû³ÆÖÐÒ²´ÓRelayFS¸Ä³ÉÁËRelay¡£
¡¡¡¡RelayFSĿǰÒѾ±»Ô½À´Ô½¶àµÄÄں˹¤¾ßʹÓ㬰üÀ¨Äں˵÷ÊÔ¹¤¾ßSystemTap¡¢LTT£¬ÒÔ¼°Ò»Ð©·Ç·²µÄÎļþϵͳÀýÈçDebugFS¡£
¡¡¡¡RelayµÄ»ù±¾ÔÀí
¡¡¡¡×ܵÄ˵À´£¬RelayÌṩÁËÒ»ÖÖ»úÖÆ£¬Ê¹µÃÄں˿ռäµÄ³ÌÐòÄܹ»Í¨¹ýÓû§¶¨ÒåµÄrelayͨµÀ(channel)½«´óÁ¿Êý¾Ý¸ßЧµÄ´«Êäµ½Óû§¿Õ¼ä¡£
¡¡¡¡Ò»¸örelayͨµÀÓÉÒ»×éºÍCPUÒ»Ò»¶ÔÓ¦µÄÄں˻º³åÇø×é³É¡£ÕâЩ»º³åÇøÓÖ±»³ÆÎªrelay»º³åÇø(buffer)£¬ÆäÖеÄÿһ¸öÔÚÓû§¿Õ¼ä¶¼ÓÃÒ»¸ö³£¹æÎļþÀ´±íʾ£¬Õâ±»½Ð×örelayÎļþ(file)¡£Äں˿ռäµÄÓû§¿ÉÒÔÀûÓÃrelayÌṩµÄAPI½Ó¿ÚÀ´Ð´ÈëÊý¾Ý£¬ÕâЩÊý¾Ý»á±»×Ô¶¯µÄдÈ뵱ǰµÄ CPU id¶ÔÓ¦µÄÄǸörelay»º³åÇø£»Í¬Ê±£¬ÕâЩ»º³åÇø´ÓÓû§¿Õ¼ä¿´À´£¬ÊÇÒ»×éÆÕͨÎļþ£¬¿ÉÒÔÖ±½ÓʹÓÃread()½øÐжÁÈ¡£¬Ò²¿ÉÒÔʹÓÃmmap()½øÐÐÓ³Éä¡£Relay²¢²»¹ØÐÄÊý¾ÝµÄ¸ñʽºÍÄÚÈÝ£¬ÕâЩÍêÈ«ÒÀ¿¿ÓÚʹÓÃrelayµÄÓû§³ÌÐò¡£RelayµÄÄ¿µÄÊÇÌṩһ¸ö×ã¹»¼òµ¥µÄ½Ó¿Ú£¬´Ó¶øÊ¹µÃ»ù±¾²Ù×÷¾¡¿ÉÄܵĸßЧ¡£
¡¡¡¡Relay½«Êý¾ÝµÄ¶ÁºÍд·ÖÀ룬ʹµÃÍ»·¢ÐÔ´óÁ¿Êý¾ÝдÈëµÄʱºò£¬²»ÐèÒªÊÜÏÞÓÚÓû§¿Õ¼äÏà¶Ô½ÏÂýµÄ¶ÁÈ¡ËÙ¶È£¬´Ó¶ø´ó´óÌá¸ßÁËЧÂÊ¡£Relay×÷ΪдÈëºÍ¶ÁÈ¡µÄÇÅÁº£¬Ò²¾ÍÊǽ«ÄÚºËÓû§Ð´ÈëµÄÊý¾Ý»º´æ²¢×ª·¢¸øÓû§¿Õ¼äµÄ³ÌÐò¡£ÕâÖÖת·¢»úÖÆÒ²ÕýÊÇRelayÕâ¸öÃû³ÆµÄÓÉÀ´¡£
¡¡¡¡ÕâÀïµÄrelayͨµÀÓÉËĸörelay»º³åÇø(kbuf0µ½kbuf3)×é³É£¬·Ö±ð¶ÔÓ¦ÓÚϵͳÖеÄcpu0µ½cpu1¡£Ã¿¸öCPUÉϵĴúÂëµ÷ÓÃrelay_write()µÄʱºò½«Êý¾ÝдÈë×Ô¼º¶ÔÓ¦µÄrelay»º³åÇøÄÚ¡£Ã¿¸örelay»º³åÇø³ÆÒ»¸örelayÎļþ£¬¼´/cpu0µ½ /cpu3¡£µ±Îļþϵͳ±»mountµ½/mnt/ÒÔºó£¬Õâ¸örelayÎļþ¾Í±»Ó³Éä³ÉÓ³Éäµ½Óû§¿Õ¼äµÄµØÖ·¿Õ¼ä¡£Ò»µ©Êý¾Ý¿ÉÓã¬Óû§³ÌÐò¾Í¿ÉÒÔ°ÑËüµÄÊý¾Ý¶Á³öÀ´Ð´Èëµ½Ó²ÅÌÉϵÄÎļþÖУ¬¼´cpu0.outµ½cpu3.out¡£
¡¡¡¡RelayµÄÖ÷ÒªAPI
¡¡¡¡Ç°ÃæÌáµ½µÄ relay_write() ¾ÍÊÇ relay API Ö®Ò»¡£³ý´ËÒÔÍ⣬Relay »¹ÌṩÁ˸ü¶àµÄ APIÀ´Ö§³ÖÓû§³ÌÐòÍêÕûµÄʹÓà relay¡£ÕâЩ API£¬Ö÷Òª°´ÕÕÃæÏòÓû§¿Õ¼äºÍÃæÏòÄں˿ռä·ÖΪÁ½´óÀ࣬ÏÂÃæÎÒÃÇÀ´·Ö±ð½øÐнéÉÜ¡£
¡¡¡¡ÃæÏòÓû§¿Õ¼äµÄ API
¡¡¡¡ÕâЩ Relay ±à³Ì½Ó¿ÚÏòÓû§¿Õ¼ä³ÌÐòÌṩÁË·ÃÎÊ relay ͨµÀ»º³åÇøÊý¾ÝµÄ»ù±¾²Ù×÷µÄÈë¿Ú£¬°üÀ¨£º
¡¡¡¡¡ñopen() - ´ðÓ¦Óû§´ò¿ªÒ»¸öÒѾ´æÔÚµÄͨµÀ»º³åÇø¡£
¡¡¡¡¡ñmmap() - ʹͨµÀ»º³åÇø±»Ó³É䵽λÓÚÓû§¿Õ¼äµÄµ÷ÓÃÕߵĵØÖ·¿Õ¼ä¡£Òª·Ç·²×¢ÖصÄÊÇ£¬ÎÒÃDz»Äܽö¶Ô¾Ö²¿ÇøÓò½øÐÐÓ³Éä¡£Ò²¾ÍÊÇ˵£¬±ØÐëÓ³ÉäÕû¸ö»º³åÇøÎļþ£¬Æä´óСÊÇ CPUµÄ¸öÊýºÍµ¥¸ö CPU »º³åÇø´óСµÄ³Ë»ý¡£
¡¡¡¡¡ñread() - ¶ÁȡͨµÀ»º³åÇøµÄÄÚÈÝ¡£ÕâЩÊý¾ÝÒ»µ©±»¶Á³ö£¬¾ÍÒâζ×ÅËûÃDZ»Óû§¿Õ¼äµÄ³ÌÐòÏû·ÑµôÁË£¬Ò²¾Í²»Äܱ»Ö®ºóµÄ¶Á²Ù×÷¿´µ½¡£
¡¡¡¡¡ñsendfile() - ½«Êý¾Ý´ÓͨµÀ»º³åÇø´«Êäµ½Ò»¸öÊä³öÎļþÃèÊö·û¡£ÆäÖпÉÄܵÄÌî³ä×Ö·û»á±»×Ô¶¯È¥µô£¬²»»á±»Óû§¿´µ½¡£
¡¡¡¡¡ñpoll() - Ö§³Ö POLLIN/POLLRDNORM/POLLERR Ðźš£Ã¿´Î×Ó»º³åÇøµÄ±ß½ç±»Ô½¹ýʱ£¬µÈ´ý×ŵÄÓû§¿Õ¼ä³ÌÐò»áµÃµ½Í¨Öª¡£
¡¡¡¡¡ñclose() - ½«Í¨µÀ»º³åÇøµÄÒýÓÃÊý¼õ1¡£µ±ÒýÓÃÊý¼õΪ0ʱ£¬±íÃ÷ûÓнø³Ì»òÕßÄÚºËÓû§ÐèÒª´ò¿ªËü£¬´Ó¶øÕâ¸öͨµÀ»º³åÇø±»ÊÍ·Å¡£
Ïà¹ØÐÅÏ¢
- LinuxÓëWindowsÔÚÊ®Èý·½Ãæ½øÐдó¶Ô¾ö
- ÔÚLinuxÖÐÓ÷À»ðǽµÖµ²ºÚ¿Í¹¥»÷
- Ç×ÉíÌåÑé Éý¼¶LinuxϵͳÄÚºËÍêÈ«¹ý³Ì
- °²×°¹ýWindowsµÄµçÄÔÉÏÈçºÎ°²×°Linux
- Linux²¡¶¾ºÍUNIX²¡¶¾ÐèÒªÌØ±ðÖØÊÓ
- ³¬ºÃÓà LinuxϵͳµÄ8¸ö¾µä¼¼ÇÉ
- WindowsÓû§ÈëÃÅLinux°ËÎÊ
- Linux FTP·þÎñÆ÷µÄÉèÖÃÎÊÌâ
- ¿´Ò»ÌõLinuxÃüÁî Á˽âÒ»¶ÎÈËÀàÎÄÃ÷
- ɾ³ýLinuxºóÈçºÎÕÒ»ØWindowsÆô¶¯²Ëµ¥
- LinuxÓ¦ÓÃÈí¼þ̸֮Զ³Ì×ÀÃæ¿ØÖÆÆª
- ²Ù×÷ϵͳµÄÒ»³¡¸ïÃü Linuxϵͳ·çÓê15Äê
Ó²¼þ¹ÊÕÏרÌâ
¸ü¶àÈí¼þ¹ÊÕÏάÐÞ
¸ü¶à- ²¥·Å1080I ÀÏÓ¥ÀÖ¶Ó¸æ±ðÑÝ×à»áÓÐÀË¿»ò
- ÎÞÒâÖз¢ÏÖÓÐÈËÌṩ MPC Homecinema µÄ
- ÍÆ¼ö£¡ÕûÀíºÃµÄWPS 2007³£ÓÃÉèÖü¼ÇÉ
- WinRAR¾Å´ó²»´«Ãܼ¼
- IEä¯ÀÀÆ÷·ÀºÚ¼¼ÇÉÊ®Ôò
- PowerDVD 8.0 Ultra ²¥·ÅDTSÒô¹ìÓÐÎÊÌâ
- WMA3ÒôƵÈçºÎ²ÅÄÜʵÏÖ¹âÏË5.1Êä³ö°¡£¿
- ÔõôûÈËÌÖÂÛGeForce 8200?
- Word¹¤¾ßÀ¸°´Å¥Ö±½ÓÆô¶¯Íⲿ³ÌÐò
- ¡¾ÇóÖú¡¿ÎÒµÄHD2400PRO¸ßÇå°æÔõô¿ª²»
¾É°æµçÄÔ¹ÊÕÏÍø
ÔĶÁÅÅÐÐ
- ÈÃÄãµÄLinuxÓÃÆðÀ´¸úWindowsÎÞÒì
- Linux²Ù×÷ϵͳϵļ¯ÈºÔÀí¼°ÊµÕ½¾Àú
- ÔÚLinuxϵͳϽ¨Á¢Ç¿Ê¢µÄFTPËÑË÷ÒýÇæ
- RedHat LinuxÏ·À»ðǽÅäÖÃÈëÃÅ
- ɾ³ýLinuxºóÈçºÎÕÒ»ØWindowsÆô¶¯²Ëµ¥
- Linux2.6Äں˵ÄǶÈëʽϵͳӦÓÃ
- ʵÏÖLinuxÓëwindowsµÄÎļþ»¥´«
- linuxÈëÃÅ½Ì³Ì µÚ1Õ ϵͳ¼ò½é
- ²Ù×÷ϵͳµÄÒ»³¡¸ïÃü Linuxϵͳ·çÓê15Äê
- Õһس¬¼¶Óû§ÃÜÂë
- ¸ÅÊöLinuxϵͳµÄÇý¶¯¿ò¼Ü¼°Çý¶¯¼ÓÔØ
- ÇáËÉÖÆ×÷LinuxϵͳÆô¶¯Å̵ÄËÄÖÖ·½·¨
