LinuxÄÚºËÖÐÄÚ´æcacheµÄʵÏÖ
1. ǰÑÔ
kmem_cacheÊÇLinuxÄÚºËÌṩµÄ¿ìËÙÄڴ滺³å½Ó¿Ú£¬ÕâЩÄÚ´æ¿éÒªÇóÊÇ´óСÏàͬµÄ£¬ÒòΪ·ÖÅä³öµÄÄÚ
´æÔÚ½Ó¿ÚÊÍ·Åʱ²¢²»ÕæÕýÊÍ·Å£¬¶øÊÇ×÷Ϊ»º´æ±£Áô£¬ÏÂÒ»´ÎÇëÇó·ÖÅäʱ¾Í¿ÉÒÔÖ±½ÓʹÓã¬Ê¡È¥Á˸÷ÖÖ
ÄÚ´æ¿é³õʼ»¯»òÊͷŵIJÙ×÷£¬Òò´Ë·ÖÅäËٶȺܿ죬ͨ³£ÓÃÓÚ´óÊýÁ¿µÄÄÚ´æ¿é·ÖÅäµÄÇé¿ö£¬Èçinode½Ú
µã£¬skbuffÍ·, netfilterµÄÁ¬½ÓµÈ£¬ÆäʵkmallocÒ²ÊÇ´Ókmem_cacheÖзÖÅäµÄ£¬¿Éͨ
¹ý/proc/slabinfoÎļþÖ±½Ó¶ÁÈ¡cache·ÖÅäÇé¿ö¡£
ÒÔÏÂLinuxÄں˴úÂë°æ±¾Îª2.6.19.2, ³ÌÐòÖ÷Òª³ö×Ômm/slab.cÎļþ, 2.4ºÍ2.6»ù±¾ÔÀí²î²»¶à,µ«¾ß
ÌåʵÏÖÖÐÓÐÁ˲»Éٱ仯¡£
2. slabºÍpage
ÔÚ½éÉÜkmem_cache֮ǰÐèÒªÏȽéÉÜpageºÍslabÕâÁ½¸ö¶¨Òå¡£ÖÚËùÖÜÖª£¬pageÊÇÄÚºËÖÐÄÚ´æ»ù±¾¹ÜÀíµ¥
λ£¬Ã¿¸öpageµÄÄÚ´æ´óСÊǹ̶¨µÄ£¬¶ÔX86»úÆ÷À´Ëµ£¬ÊÇ4K£»slabÔòÊÇkmem_cacheµÄ¾ßÌåµÄÄÚ´æ¿Õ¼ä
ÐÎʽ£¬¸ù¾ÝcacheµÄ¶ÔÏóµÄ´óС£¬Ã¿¸öslab¿ÉÒÔÓÐ1¸öpageµ½×î¶à32(128/4)¸öpage£»Èç¹ûcache¶ÔÏó±È
Ò»¸öpageµÄ¿Õ¼äС£¬Õâ¸öslabÖлáÈÝÄɶà¸ö¶ÔÏóÒÔ¾¡¿ÉÄܵØÀûÓÿռ䡣
struct slab {
// Á´±í
struct list_head list;
// δÓÿռäµÄÆ«ÒÆ
unsigned long colouroff;
// ¾ßÌåµÄÄڴ滺³åÇøµØÖ·
void *s_mem; /* including colour offset */
// ÿ¸öslabÖеÄÕýÔÚʹÓõĶÔÏóÊýÁ¿
unsigned int inuse; /* num of objs active in slab */
// ¿ÕÏжÔÏó
kmem_bufctl_t free;
unsigned short nodeid;
};
3. Êý¾Ý½á¹¹
kmem_cacheÊý¾Ý½á¹¹²¢Ã»Óж¨ÒåÔÚ.hµÄÍ·ÎļþÖУ¬ÔÚÍ·ÎļþÖÐÖ»ÊǸýṹµÄÒ»¸öÀàÐͶ¨Ò壬ÒòΪÆäËû
µØ·½Ê¹ÓÃkmem_cacheʱÍêÈ«²»ÐèÒªÖªµÀÆäÄÚ²¿½á¹¹£¬¸÷½Ó¿Úº¯ÊýÍêÈ«·â×°½á¹¹ÖеÄÐÅÏ¢£¬ÕâÊÇÓÃCʵ
ÏÖOO±à³ÌµÄ³£Ó÷½Ê½¡£
/* include/linux/slab.h */
// ÕâÀïÖ»ÊÇÒ»¸öÀàÐͶ¨Òå
typedef struct kmem_cache kmem_cache_t;
/* mm/slab.c */
// ÔÚCÎļþÖнøÐÐÍêÕûµÄ¶¨Òå
/*
* struct array_cache
*
* Purpose:
* - LIFO ordering, to hand out cache-warm objects from _alloc
* - reduce the number of linked list operations
* - reduce spinlock operations
*
* The limit is stored in the per-cpu structure to reduce the data cache
* footprint.
*
*/
// ÕâÊÇÿ¸öCPU¶ÔÓ¦µÄcacheÊý¾Ý
struct array_cache {
unsign
Ïà¹ØÎĵµ£º
http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/
×î½ü¿´ÁËһЩLinuxÃüÁîÐеÄÎÄÕ£¬ÔÚϵͳÐÅÏ¢²é¿´·½ÃæÑ§µ½²»ÉÙÃüÁî¡£
ÏëÆðÒÔǰд¹ýµÄһƪÆäʵLinuxÕâÑùÓøü¼òµ¥
£¬
·¢ÏÖÕâЩϵͳÐÅÏ¢²é¿´ÃüÁîÒ²¿ÉÒÔ×ܽá³öһƪССµÄ¶«Î÷À´ÁË¡£
ÁíÍâÕâÀï
»¹Óзdz£¶àµÄÃüÁ
¿ÉÒÔ×÷Ϊ²Î¿¼¡£
ϵͳ
# uname -a # ......
1¡¢Îļþϵͳ£ºext2 ext3 reiserfs xfsµÈ
¡¡¡¡2¡¢·¶Î§£ºÌáʾÎļþϵͳÐèÒªFSCKʱ£¬Î´Ö´ÐлòFSCKÖ´ÐÐÍê³É
¡¡¡¡[Ö¢×´]
¡¡ ¡¡1¡¢ÎÞ·¨MOUNT·ÖÇø£»
¡¡ ¡¡2¡¢´óÁ¿Îļþ¡¢Ä¿Â¼¶ªÊ§£¬¸ùĿ¼ÏÂÉú³É/LOST FOUNDÎļþ¼Ð£¬ÀïÃæÓдóÁ¿#XXXXXXÀàµÄÎļþºÍĿ¼£»
¡¡ ¡¡3¡¢FSCKºÜ¿ì±¨´íÍê³É£»
¡¡ ¡¡4¡¢FSCKÖ´ÐÐʱ£¬ÓдóÁ¿Ìáʾ£¬ÈçÐ޸Ľڵ㡠......
ÔÚLinuxµÄc±à³ÌÖдó¼Ò¾³£ÓÃgdbµ÷ÊÔ³ÌÐò£¬ÒÔÏÂÊÇһЩ³£ÓõÄÖ¸Áî 1.break FUNCTION ÔÚij¸öº¯ÊýÉÏÉèÖöϵ㡣º¯ÊýÖØÔØÊ±£¬ÓпÉÄÜͬʱÔÚ¼¸¸öÖØÔØµÄº¯ÊýÉÏÉèÖÃÁ˶ϵã
break +OFFSET break -OFFSET ÔÚµ±Ç°³ÌÐòÔËÐе½µÄǰ¼¸Ðлòºó¼¸ÐÐÉèÖöϵã
break LINENUM ÔÚÐкÅΪLINENUMµÄÐÐÉÏÉèÖöϵã
break FILENAME:LINENUM ÔÚÎļþÃûÎ ......
------------LinuxÉϹÒÔØWindows¹²ÏíĿ¼£¨ÖØÆôºóʧЧ£©--------------------
µÚÒ»²½£ºÏÈÔÚWindowsÉÏ´´½¨Ò»¸ö¹²ÏíĿ¼
µÚ¶þ²½£ºÔÚlinuxÖÐÔËÐÐÈçÏÂÃüÁ
mount.cifs //192.168.10.43/shared /root/shared -o user=name,pass=123456
×¢£º/root/sharedÊÇlinuxÉϵÄĿ¼¡£userÊÇWindowsϵͳµÄÓû§Ãû passÊÇWindo ......