1 ¡¢Ç°ÑÔ
¡¡¡¡×Ô´Óµ®ÉúÒÔÀ´£¬Linux ¾Í±»²»¶ÏÍêÉÆºÍÆÕ¼°£¬Ä¿Ç°ËüÒѾ³ÉΪÖ÷Á÷ͨÓòÙ×÷ϵͳ֮һ£¬Ê¹Óõ÷dz£¹ã·º£¬ËüÓë Windows¡¢UNIX Ò»ÆðÕ¼¾ÝÁ˲Ù×÷ϵͳÁìÓò¼¸ºõËùÓеÄÊг¡·Ý¶î¡£ÌرðÊÇÔÚ¸ßÐÔÄܼÆËãÁìÓò£¬Linux ÒѾ³ÉΪһ¸öÕ¼Ö÷µ¼µØÎ»µÄ²Ù×÷ϵͳ£¬ÔÚ2005Äê6ÔÂÈ«ÇòTOP500 ¼ÆËã»úÖУ¬ÓÐ 301 ̨²¿ÊðµÄÊÇ Linux ²Ù×÷ϵͳ¡£Òò´Ë£¬Ñо¿ºÍʹÓà Linux ÒѾ³ÉΪ¿ª·¢ÕߵIJ»¿É»Ø±ÜµÄÎÊÌâÁË¡£
¡¡¡¡ÏÂÃæÎÒÃǽéÉÜһϠLinux ÄÚºËÖÐÎļþ Cache ¹ÜÀíµÄ»úÖÆ¡£±¾ÎÄÒÔ 2.6 ϵÁÐÄÚºËΪ»ù×¼£¬Ö÷Òª½²Êö¹¤×÷ÔÀí¡¢Êý¾Ý½á¹¹ºÍËã·¨£¬²»Éæ¼°¾ßÌå´úÂë¡£
2 ²Ù×÷ϵͳºÍÎļþ Cache ¹ÜÀí
¡¡¡¡²Ù×÷ϵͳÊǼÆËã»úÉÏ×îÖØÒªµÄϵͳÈí¼þ£¬Ëü¸ºÔð¹ÜÀí¸÷ÖÖÎïÀí×ÊÔ´£¬²¢ÏòÓ¦ÓóÌÐòÌṩ¸÷ÖÖ³éÏó½Ó¿ÚÒÔ±ãÆäʹÓÃÕâЩÎïÀí×ÊÔ´¡£´ÓÓ¦ÓóÌÐòµÄ½Ç¶È¿´£¬²Ù×÷ϵͳÌṩÁËÒ»¸öͳһµÄÐéÄâ»ú£¬ÔÚ¸ÃÐéÄâ»úÖÐûÓи÷ÖÖ»úÆ÷µÄ¾ßÌåϸ½Ú£¬Ö»Óнø³Ì¡¢Îļþ¡¢µØÖ·¿Õ¼äÒÔ¼°½ø³Ì¼äͨÐŵÈÂß¼¸ÅÄî¡£ÕâÖÖ³éÏóÐéÄâ»úʹµÃÓ¦ÓóÌÐòµÄ¿ª·¢±äµÃÏà¶ÔÈÝÒ×£º¿ª·¢ÕßÖ»ÐèÓëÐéÄâ»úÖеĸ÷ÖÖÂß¼¶ÔÏó½»»¥£¬¶ø²»ÐèÒªÁ˽â¸÷ÖÖ»úÆ÷µÄ¾ßÌåϸ½Ú¡£´ËÍ⣬ÕâЩ³éÏóµÄÂß¼¶ÔÏóʹµÃ²Ù×÷ϵͳÄܹ»ºÜÈÝÒ׸ôÀë²¢±£»¤¸÷¸öÓ¦ÓóÌÐò¡£
¡¡¡¡¶ÔÓÚ´æ´¢É豸ÉϵÄÊý¾Ý£¬²Ù×÷ϵͳÏòÓ¦ÓóÌÐòÌṩµÄÂß¼¸ÅÄî¾ÍÊÇ"Îļþ"¡£Ó¦ÓóÌÐòÒª´æ´¢»ò·ÃÎÊÊý¾Ýʱ£¬Ö»Ðè¶Á»òÕßд"Îļþ"µÄһάµØÖ·¿Õ¼ä¼´¿É£¬¶øÕâ¸öµØÖ·¿Õ¼äÓë´æ´¢É豸ÉÏ´æ´¢¿éÖ®¼äµÄ¶ÔÓ¦¹ØÏµÔòÓɲÙ×÷ϵͳά»¤¡£
¡¡¡¡ÔÚ Linux ²Ù×÷ϵͳÖУ¬µ±Ó¦ÓóÌÐòÐèÒª¶ÁÈ¡ÎļþÖеÄÊý¾Ýʱ£¬²Ù×÷ϵͳÏÈ·ÖÅäһЩÄڴ棬½«Êý¾Ý´Ó´æ´¢É豸¶ÁÈëµ½ÕâЩÄÚ´æÖУ¬È»ºóÔÙ½«Êý¾Ý·Ö·¢¸øÓ¦ÓóÌÐò£»µ±ÐèÒªÍùÎļþÖÐдÊý¾Ýʱ£¬²Ù×÷ϵͳÏÈ·ÖÅäÄÚ´æ½ÓÊÕÓû§Êý¾Ý£¬È»ºóÔÙ½«Êý¾Ý´ÓÄÚ´æÐ´µ½´ÅÅÌÉÏ¡£Îļþ Cache ¹ÜÀíÖ¸µÄ¾ÍÊǶÔÕâЩÓɲÙ×÷ϵͳ·ÖÅ䣬²¢ÓÃÀ´´æ´¢ÎļþÊý¾ÝµÄÄÚ´æµÄ¹ÜÀí¡£ Cache ¹ÜÀíµÄÓÅÁÓͨ¹ýÁ½¸öÖ¸±êºâÁ¿£ºÒ»ÊÇ Cache ÃüÖÐÂÊ£¬Cache ÃüÖÐʱÊý¾Ý¿ÉÒÔÖ±½Ó´ÓÄÚ´æÖлñÈ¡£¬²»ÔÙÐèÒª·ÃÎʵÍËÙÍâÉ裬Òò¶ø¿ÉÒÔÏÔÖøÌá¸ßÐÔÄÜ£»¶þÊÇÓÐЧ Cache µÄ±ÈÂÊ£¬ÓÐЧ Cache ÊÇÖ¸ÕæÕý»á±»·ÃÎʵ½µÄ Cache ÏÈç¹ûÓÐЧ Cache µÄ±ÈÂÊÆ«µÍ£¬ÔòÏ൱²¿·Ö´ÅÅÌ´ø¿í»á±»À˷ѵ½¶ÁÈ¡ÎÞÓà Cache ÉÏ£¬¶øÇÒÎÞÓà Cache »á¼ä½Óµ¼ÖÂϵͳÄÚ´æ½ôÕÅ£¬×îºó¿ÉÄÜ»áÑÏÖØÓ°ÏìÐÔÄÜ¡£
¡¡¡¡ÏÂÃæ·Ö±ð½éÉÜÎļþ Cache ¹ÜÀíÔÚ Linux ²Ù×÷ϵͳÖеĵØÎ»ºÍ×÷Óá¢Linux ÖÐÎļþ CacheÏà¹ØµÄÊý¾Ý½á¹¹¡¢Linux ÖÐÎļþ Cache µÄÔ¤¶ÁºÍÌæ»»¡¢Linux ÖÐÎļþ Cache Ïà¹Ø API ¼°ÆäʵÏÖ¡£
2¡¢ Îļþ Cache µÄµØÎ»ºÍ×÷ÓÃ
¡¡¡¡Îļþ Cache ÊÇÎļþÊý¾ÝÔÚÄÚ´æÖеĸ±±¾£¬Òò´ËÎļþ Cache ¹ÜÀíÓëÄÚ´æ¹ÜÀíϵͳºÍÎļþϵͳ¶¼Ïà¹Ø£ºÒ»·½ÃæÎļþ Cache ×÷ΪÎïÀíÄÚ´æµÄÒ»²¿·Ö£¬ÐèÒª²ÎÓëÎïÀíÄÚ´æµÄ·ÖÅ仨ÊÕ¹ý³Ì£¬ÁíÒ»·½ÃæÎļþ Cache ÖеÄÊý¾ÝÀ´Ô´ÓÚ´æ´¢É豸ÉϵÄÎļþ£¬ÐèҪͨ¹ýÎļþϵͳÓë´æ´¢É豸½øÐжÁд½»»¥¡£´Ó²Ù×÷ϵͳµÄ½Ç¶È¿¼ÂÇ£¬Îļþ Cache ¿ÉÒÔ¿´×öÊÇÄÚ´æ¹ÜÀíϵͳÓëÎļþϵͳ֮¼äµÄÁªÏµÅ¦´ø¡£Òò´Ë£¬Îļþ Cache ¹ÜÀíÊDzÙ×÷ϵͳµÄÒ»¸öÖØÒª×é³É²¿·Ö£¬ËüµÄÐÔÄÜÖ±½ÓÓ°Ïì×ÅÎļþϵͳºÍÄÚ´æ¹ÜÀíϵͳµÄÐÔÄÜ¡£
¡¡¡¡Í¼1ÃèÊöÁË Linux ²Ù×÷ϵͳÖÐÎļþ Cache ¹ÜÀíÓëÄÚ´æ¹ÜÀíÒÔ¼°ÎļþϵͳµÄ¹ØÏµÊ¾Òâͼ¡£´ÓͼÖпÉÒÔ¿´µ½£¬ÔÚ Linux ÖУ¬¾ßÌåÎļþϵͳ£¬Èç ext2/ext3¡¢jfs¡¢ntfs µÈ£¬¸ºÔðÔÚÎļþ CacheºÍ´æ´¢É豸֮¼ä½»»»Êý¾Ý£¬Î»ÓÚ¾ßÌåÎļþϵͳ֮ÉϵÄÐéÄâÎļþϵͳVFS¸ºÔðÔÚÓ¦ÓóÌÐòºÍÎļþ Cache Ö®¼äͨ¹ý read/write µÈ½Ó¿Ú½»»»Êý¾Ý£¬¶øÄÚ´æ¹ÜÀíϵͳ¸ºÔðÎļþ Cache µÄ·ÖÅäºÍ»ØÊÕ£¬Í¬Ê±ÐéÄâÄÚ´æ¹ÜÀíϵͳ(VMM)ÔòÔÊÐíÓ¦ÓóÌÐòºÍÎļþ Cache Ö®¼äͨ¹ý memory mapµÄ·½Ê½½»»»Êý¾Ý¡£¿É¼û£¬ÔÚ Linux ϵͳÖУ¬Îļþ Cache ÊÇÄÚ´æ¹ÜÀíϵͳ¡¢ÎļþϵͳÒÔ¼°Ó¦ÓóÌÐòÖ®¼äµÄÒ»¸öÁªÏµÊàŦ¡£

3 ¡¢Îļþ Cache Ïà¹ØÊý¾Ý½á¹¹
¡¡¡¡ÔÚ Linux µÄʵÏÖÖУ¬Îļþ Cache ·ÖΪÁ½¸ö²ãÃæ£¬Ò»ÊÇ Page Cache£¬ÁíÒ»¸ö Buffer Cache£¬Ã¿Ò»¸ö Page Cache °üº¬Èô¸É Buffer Cache¡£ÄÚ´æ¹ÜÀíϵͳºÍ VFS Ö»Óë Page Cache ½»»¥£¬ÄÚ´æ¹ÜÀíϵͳ¸ºÔðά»¤Ã¿Ïî Page Cache µÄ·ÖÅäºÍ»ØÊÕ£¬Í¬Ê±ÔÚʹÓà memory map ·½Ê½·ÃÎÊʱ¸ºÔð½¨Á¢Ó³É䣻VFS ¸ºÔð Page Cache ÓëÓû§¿Õ¼äµÄÊý¾Ý½»»»¡£¶ø¾ßÌåÎļþϵͳÔòÒ»°ãÖ»Óë Buffer Cache ½»»¥£¬ËüÃǸºÔðÔÚÍâΧ´æ´¢É豸ºÍ Buffer Cache Ö®¼ä½»»»Êý¾Ý¡£Page Cache¡¢Buffer Cache¡¢ÎļþÒÔ¼°´ÅÅÌÖ®¼äµÄ¹ØÏµÈçͼ 2 Ëùʾ£¬Page ½á¹¹ºÍ buffer_head Êý¾Ý½á¹¹µÄ¹ØÏµÈçͼ 3 Ëùʾ¡£ÔÚÉÏÊöÁ½¸öͼÖУ¬¼Ù¶¨ÁË Page µÄ´óСÊÇ 4K£¬´ÅÅÌ¿éµÄ´óСÊÇ 1K¡£±¾ÎÄËù½²ÊöµÄ£¬Ö÷ÒªÊÇÖ¸¶Ô Page Cache µÄ¹ÜÀí¡£
¡¡¡¡ÔÚ Linux ÄÚºËÖУ¬ÎļþµÄÿ¸öÊý¾Ý¿é×î¶àÖ»ÄܶÔÓ¦Ò»¸ö Page Cache ÏËüͨ¹ýÁ½¸öÊý¾Ý½á¹¹À´¹ÜÀíÕâЩ Cache Ïһ¸öÊÇ radix tree£¬ÁíÒ»¸öÊÇË«ÏòÁ´±í¡£Radix tree ÊÇÒ»ÖÖËÑË÷Ê÷£¬Linux ÄÚºËÀûÓÃÕâ¸öÊý¾Ý½á¹¹À´Í¨¹ýÎļþÄÚÆ«ÒÆ¿ìËÙ¶¨Î» Cache Ïͼ 4 ÊÇ radix treeµÄÒ»¸öʾÒâͼ£¬¸Ã radix tree µÄ·Ö²æÎª4(22)£¬Ê÷¸ßΪ4£¬ÓÃÀ´¿ìËÙ¶¨Î»8λÎļþÄÚÆ«ÒÆ¡£Linux(2.6.7) ÄÚºËÖеķֲæÎª 64(26)£¬Ê÷¸ßΪ 6(64λϵͳ)»òÕß 11(32λϵͳ)£¬ÓÃÀ´¿ìËÙ¶¨Î» 32 λ»òÕß 64 Î»Æ«ÒÆ£¬radix tree ÖеÄÿһ¸öÒ¶×Ó½ÚµãÖ¸ÏòÎļþÄÚÏàÓ¦Æ«ÒÆËù¶ÔÓ¦µÄCacheÏî¡£
¡¡¡¡ÁíÒ»¸öÊý¾Ý½á¹¹ÊÇË«ÏòÁ´±í£¬LinuxÄÚºËΪÿһƬÎïÀíÄÚ´æÇøÓò(zone)ά»¤active_listºÍinactive_listÁ½¸öË«ÏòÁ´±í£¬ÕâÁ½¸ölistÖ÷ÒªÓÃÀ´ÊµÏÖÎïÀíÄÚ´æµÄ»ØÊÕ¡£ÕâÁ½¸öÁ´±íÉϳýÁËÎļþCacheÖ®Í⣬»¹°üÀ¨ÆäËüÄäÃû(Anonymous)Äڴ棬Èç½ø³Ì¶ÑÕ»µÈ¡£



4 ¡¢ÎļþCacheµÄÔ¤¶ÁºÍÌæ»»
¡¡¡¡LinuxÄÚºËÖÐÎļþÔ¤¶ÁËã·¨µÄ¾ßÌå¹ý³ÌÊÇÕâÑùµÄ£º¶ÔÓÚÿ¸öÎļþµÄµÚÒ»¸ö¶ÁÇëÇó£¬ÏµÍ³¶ÁÈëËùÇëÇóµÄÒ³Ãæ²¢¶ÁÈë½ôËæÆäºóµÄÉÙÊý¼¸¸öÒ³Ãæ(²»ÉÙÓÚÒ»¸öÒ³Ãæ£¬Í¨³£ÊÇÈý¸öÒ³Ãæ)£¬ÕâʱµÄÔ¤¶Á³ÆÎªÍ¬²½Ô¤¶Á¡£¶ÔÓÚµÚ¶þ´Î¶ÁÇëÇó£¬Èç¹ûËù¶ÁÒ³Ãæ²»ÔÚCacheÖУ¬¼´²»ÔÚǰ´ÎÔ¤¶ÁµÄgroupÖУ¬Ôò±íÃ÷Îļþ·ÃÎʲ»ÊÇ˳Ðò·ÃÎÊ£¬ÏµÍ³¼ÌÐø²ÉÓÃͬ²½Ô¤¶Á£»Èç¹ûËù¶ÁÒ³ÃæÔÚCacheÖУ¬Ôò±íÃ÷ǰ´ÎÔ¤¶ÁÃüÖУ¬²Ù×÷ϵͳ°ÑÔ¤¶ÁgroupÀ©´óÒ»±¶£¬²¢ÈõײãÎļþϵͳ¶ÁÈëgroupÖÐÊ£ÏÂÉв»ÔÚCacheÖеÄÎļþÊý¾Ý¿é£¬ÕâʱµÄÔ¤¶Á³ÆÎªÒì²½Ô¤¶Á¡£ÎÞÂÛµÚ¶þ´Î¶ÁÇëÇóÊÇ·ñÃüÖУ¬ÏµÍ³¶¼Òª¸üе±Ç°Ô¤¶ÁgroupµÄ´óС¡£´ËÍ⣬ϵͳÖж¨ÒåÁËÒ»¸öwindow£¬Ëü°üÀ¨Ç°Ò»´ÎÔ¤¶ÁµÄgroupºÍ±¾´ÎÔ¤¶ÁµÄgroup¡£ÈκνÓÏÂÀ´µÄ¶ÁÇëÇ󶼻ᴦÓÚÁ½ÖÖÇé¿öÖ®Ò»£ºµÚÒ»ÖÖÇé¿öÊÇËùÇëÇóµÄÒ³Ãæ´¦ÓÚÔ¤¶ÁwindowÖУ¬Õâʱ¼ÌÐø½øÐÐÒì²½Ô¤¶Á²¢¸üÐÂÏàÓ¦µÄwindowºÍgroup£»µÚ¶þÖÖÇé¿öÊÇËùÇëÇóµÄÒ³Ãæ´¦ÓÚÔ¤¶ÁwindowÖ®Í⣬Õâʱϵͳ¾ÍÒª½øÐÐͬ²½Ô¤¶Á²¢ÖØÖÃÏàÓ¦µÄwindowºÍgroup¡£Í¼5ÊÇLinuxÄÚºËÔ¤¶Á»úÖÆµÄÒ»¸öʾÒâͼ£¬ÆäÖÐaÊÇij´Î¶Á²Ù×÷֮ǰµÄÇé¿ö£¬bÊǶÁ²Ù×÷ËùÇëÇóÒ³Ãæ²»ÔÚwindowÖеÄÇé¿ö£¬¶øcÊǶÁ²Ù×÷ËùÇëÇóÒ³ÃæÔÚwindowÖеÄÇé¿ö¡£
¡¡¡¡LinuxÄÚºËÖÐÎļþCacheÌæ»»µÄ¾ßÌå¹ý³ÌÊÇÕâÑùµÄ£º¸Õ¸Õ·ÖÅäµÄCacheÏîÁ´Èëµ½inactive_listÍ·²¿£¬²¢½«Æä״̬ÉèÖÃΪactive£¬µ±ÄÚ´æ²»¹»ÐèÒª»ØÊÕCacheʱ£¬ÏµÍ³Ê×ÏÈ´Óβ²¿¿ªÊ¼·´ÏòɨÃèactive_list²¢½«×´Ì¬²»ÊÇreferencedµÄÏîÁ´Èëµ½inactive_listµÄÍ·²¿£¬È»ºóϵͳ·´ÏòɨÃèinactive_list£¬Èç¹ûËùɨÃèµÄÏîµÄ´¦ÓÚºÏÊʵÄ״̬¾Í»ØÊÕ¸ÃÏֱµ½»ØÊÕÁË×ã¹»ÊýÄ¿µÄCacheÏî¡£CacheÌæ»»Ëã·¨Èçͼ6µÄËã·¨ÃèÊöαÂëËùʾ¡£

¡¡¡¡Í¼6 LinuxµÄCacheÌæ»»Ëã·¨ÃèÊö
Mark_Accessed(b) { if b.state==(UNACTIVE && UNREFERENCE) b.state = REFERENCE else if b.state == (UNACTIVE && REFERENCE) { b.state = (ACTIVE && UNREFERENCE) Add X to tail of active_list } else if b.state == (ACTIVE && UNREFERENCE) b.state = (ACTIVE && REFERENCE)}Reclaim() { if active_list not empty and scan_num |
5 ¡¢ÎļþCacheÏà¹ØAPI¼°ÆäʵÏÖ
¡¡¡¡LinuxÄÚºËÖÐÓëÎļþCache²Ù×÷Ïà¹ØµÄAPIÓкܶ࣬°´ÆäʹÓ÷½Ê½¿ÉÒÔ·Ö³ÉÁ½ÀࣺһÀàÊÇÒÔ¿½±´·½Ê½²Ù×÷µÄÏà¹Ø½Ó¿Ú£¬ Èçread/write/sendfileµÈ£¬ÆäÖÐsendfileÔÚ2.6ϵÁеÄÄÚºËÖÐÒѾ²»ÔÙÖ§³Ö£»ÁíÒ»ÀàÊÇÒÔµØÖ·Ó³É䷽ʽ²Ù×÷µÄÏà¹Ø½Ó¿Ú£¬ÈçmmapµÈ¡£
¡¡¡¡µÚÒ»ÖÖÀàÐ͵ÄAPIÔÚ²»Í¬ÎļþµÄCacheÖ®¼ä»òÕßCacheÓëÓ¦ÓóÌÐòËùÌṩµÄÓû§¿Õ¼äbufferÖ®¼ä¿½±´Êý¾Ý£¬ÆäʵÏÖÔÀíÈçͼ7Ëùʾ¡£

¡¡¡¡µÚ¶þÖÖÀàÐ͵ÄAPI½«CacheÏîÓ³Éäµ½Óû§¿Õ¼ä£¬Ê¹µÃÓ¦ÓóÌÐò¿ÉÒÔÏñʹÓÃÄÚ´æÖ¸ÕëÒ»Ñù·ÃÎÊÎļþ£¬Memory map·ÃÎÊCacheµÄ·½Ê½ÔÚÄÚºËÖÐÊDzÉÓÃÇëÇóÒ³Ãæ»úÖÆÊµÏֵ쬯乤×÷¹ý³ÌÈçͼ8Ëùʾ¡£

¡¡¡¡Ê×ÏÈ£¬Ó¦ÓóÌÐòµ÷ÓÃmmap£¨Í¼ÖÐ1£©£¬ÏÝÈëµ½ÄÚºËÖкóµ÷ÓÃdo_mmap_pgoff£¨Í¼ÖÐ2£©¡£¸Ãº¯Êý´ÓÓ¦ÓóÌÐòµÄµØÖ·¿Õ¼äÖзÖÅäÒ»¶ÎÇøÓò×÷ΪӳÉäµÄÄÚ´æµØÖ·£¬²¢Ê¹ÓÃÒ»¸öVMA£¨vm_area_struct£©½á¹¹´ú±í¸ÃÇøÓò£¬Ö®ºó¾Í·µ»Øµ½Ó¦ÓóÌÐò£¨Í¼ÖÐ3£©¡£µ±Ó¦ÓóÌÐò·ÃÎÊmmapËù·µ»ØµÄµØÖ·Ö¸Õëʱ£¨Í¼ÖÐ4£©£¬ÓÉÓÚÐéʵӳÉäÉÐ佨Á¢£¬»á´¥·¢È±Ò³Öжϣ¨Í¼ÖÐ5£©¡£Ö®ºóϵͳ»áµ÷ÓÃȱҳÖжϴ¦Àíº¯Êý£¨Í¼ÖÐ6£©£¬ÔÚȱҳÖжϴ¦Àíº¯ÊýÖУ¬ÄÚºËͨ¹ýÏàÓ¦ÇøÓòµÄVMA½á¹¹Åжϳö¸ÃÇøÓòÊôÓÚÎļþÓ³É䣬ÓÚÊǵ÷ÓþßÌåÎļþϵͳµÄ½Ó¿Ú¶ÁÈëÏàÓ¦µÄPage CacheÏͼÖÐ7¡¢8¡¢9£©£¬²¢ÌîдÏàÓ¦µÄÐéʵӳÉä±í¡£¾¹ýÕâЩ²½ÖèÖ®ºó£¬Ó¦ÓóÌÐò¾Í¿ÉÒÔÕý³£·ÃÎÊÏàÓ¦µÄÄÚ´æÇøÓòÁË¡£
6 ¡¢Ð¡½á
¡¡¡¡ÎļþCache¹ÜÀíÊÇLinux²Ù×÷ϵͳµÄÒ»¸öÖØÒª×é³É²¿·Ö£¬Í¬Ê±Ò²ÊÇÑо¿ÁìÓòÒ»¸öºÜÈÈÃŵÄÑо¿·½Ïò¡£Ä¿Ç°£¬LinuxÄÚºËÔÚÕâ¸ö·½ÃæµÄ¹¤×÷¼¯ÖÐÔÚ¿ª·¢¸üÓÐЧµÄCacheÌæ»»Ëã·¨ÉÏ£¬ÈçLIRS(Æä±äÖÖClockPro)¡¢ARCµÈ¡£Ïà¹ØÐÅÏ¢¿É¼ûhttp://linux-mm.org/AdvancedPageReplacement¡£
²Î¿¼×ÊÁÏ
| ×ÔÓÉ¹ã¸æÇø |
| ¡¡ |