LinuxÄÚºËNAPI»úÖÆ·ÖÎö
NAPI ÊÇ Linux ÉϲÉÓõÄÒ»ÖÖÌá¸ßÍøÂç´¦ÀíЧÂʵļ¼Êõ£¬ËüµÄºËÐĸÅÄî¾ÍÊDz»²ÉÓÃÖжϵķ½Ê½¶ÁÈ¡Êý¾Ý£¬¶ø´úÖ®ÒÔÊ×ÏȲÉÓÃÖжϻ½ÐÑÊý¾Ý½ÓÊյķþÎñ³ÌÐò£¬È»ºó POLL µÄ·½·¨À´ÂÖѯÊý¾Ý¡£Ëæ×ÅÍøÂçµÄ½ÓÊÕËٶȵÄÔö¼Ó£¬NIC ´¥·¢µÄÖжÏÄÜ×öµ½²»¶Ï¼õÉÙ£¬Ä¿Ç° NAPI ¼¼ÊõÒѾÔÚÍø¿¨Çý¶¯²ãºÍÍøÂç²ãµÃµ½Á˹㷺µÄÓ¦Óã¬Çý¶¯²ã´ÎÉÏÒѾÓÐ E1000 ϵÁÐÍø¿¨£¬RTL8139 ϵÁÐÍø¿¨£¬3c50X ϵÁеÈÖ÷Á÷µÄÍøÂçÊÊÅäÆ÷¶¼²ÉÓÃÁËÕâ¸ö¼¼Êõ£¬¶øÔÚÍøÂç²ã´ÎÉÏ£¬NAPI ¼¼ÊõÒѾÍêÈ«±»Ó¦Óõ½ÁËÖøÃûµÄ netif_rx º¯ÊýÖм䣬²¢ÇÒÌṩÁËרÃÅµÄ POLL ·½·¨--process_backlog À´´¦ÀíÂÖѯµÄ·½·¨£»¸ù¾ÝʵÑéÊý¾Ý±íÃ÷²ÉÓÃNAPI¼¼Êõ¿ÉÒÔ´ó´ó¸ÄÉÆ¶Ì³¤¶ÈÊý¾Ý°ü½ÓÊÕµÄЧÂÊ£¬¼õÉÙÖжϴ¥·¢µÄʱ¼ä¡£
µ«ÊÇ NAPI ´æÔÚһЩ±È½ÏÑÏÖØµÄȱÏÝ£º
1£® ¶ÔÓÚÉϲãµÄÓ¦ÓóÌÐò¶øÑÔ£¬ÏµÍ³²»ÄÜÔÚÿ¸öÊý¾Ý°ü½ÓÊÕµ½µÄʱºò¶¼¿ÉÒÔ¼°Ê±µØÈ¥´¦ÀíËü£¬¶øÇÒËæ×Å´«ÊäËÙ¶ÈÔö¼Ó£¬ÀۼƵÄÊý¾Ý°ü½«»áºÄ·Ñ´óÁ¿µÄÄڴ棬¾¹ýʵÑé±íÃ÷ÔÚ Linux ƽ̨ÉÏÕâ¸öÎÊÌâ»á±ÈÔÚ FreeBSD ÉÏÒªÑÏÖØÒ»Ð©£»
2£® ÁíÍâÒ»¸öÎÊÌâÊǶÔÓÚ´óµÄÊý¾Ý°ü´¦Àí±È½ÏÀ§ÄÑ£¬ÔÒòÊÇ´óµÄÊý¾Ý°ü´«Ë͵½ÍøÂç²ãÉϵÄʱºòºÄ·ÑµÄʱ¼ä±È¶ÌÊý¾Ý°ü³¤ºÜ¶à£¨¼´Ê¹ÊDzÉÓà DMA ·½Ê½£©£¬ËùÒÔÕýÈçÇ°ÃæËù˵µÄÄÇÑù£¬NAPI ¼¼ÊõÊÊÓÃÓÚ¶Ô¸ßËÙÂʵĶ̳¤¶ÈÊý¾Ý°üµÄ´¦Àí¡£
ʹÓà NAPI ÏȾöÌõ¼þ£º
Çý¶¯¿ÉÒÔ¼ÌÐøÊ¹ÓÃÀ쵀 2.4 Äں˵ÄÍøÂçÇý¶¯³ÌÐò½Ó¿Ú£¬NAPI µÄ¼ÓÈë²¢²»»áµ¼ÖÂÏòǰ¼æÈÝÐÔµÄɥʧ£¬µ«ÊÇ NAPI µÄʹÓÃÖÁÉÙÒªµÃµ½ÏÂÃæµÄ±£Ö¤£º
1. ҪʹÓà DMA µÄ»·ÐÎÊäÈë¶ÓÁУ¨Ò²¾ÍÊÇ ring_dma£¬Õâ¸öÔÚ 2.4 Çý¶¯ÖйØÓÚ Ethernet µÄ²¿·ÖÓÐÏêϸµÄ½éÉÜ£©£¬»òÕßÊÇÓÐ×ã¹»µÄÄÚ´æ¿Õ¼ä»º´æÇý¶¯»ñµÃµÄ°ü¡£
2. ÔÚ·¢ËÍ/½ÓÊÕÊý¾Ý°ü²úÉúÖжϵÄʱºòÓÐÄÜÁ¦¹Ø¶Ï NIC ÖжϵÄʼþ´¦Àí£¬²¢ÇÒÔÚ¹Ø¶Ï NIC ÒԺ󣬲¢²»Ó°ÏìÊý¾Ý°ü½ÓÊÕµ½ÍøÂçÉ豸µÄ»·Ðλº³åÇø£¨ÒÔϼò³Æ rx-ring£©´¦Àí¶ÓÁÐÖС£
NAPI ¶ÔÊý¾Ý°üµ½´ïµÄʼþµÄ´¦Àí²ÉÓÃÂÖѯ·½·¨£¬ÔÚÊý¾Ý°ü´ïµ½µÄʱºò£¬NAPI ¾Í»áÇ¿ÖÆÖ´ÐÐdev->poll ·½·¨¡£¶øºÍ²»ÏñÒÔǰµÄÇý¶¯ÄÇÑùΪÁ˼õÉÙ°üµ½´ïʱ¼äµÄ´¦ÀíÑÓ³Ù£¬Í¨³£²ÉÓÃÖжϵķ½·¨À´½øÐС£
E1000Íø¿¨Çý¶¯³ÌÐò¶ÔNAPIµÄÖ§³Ö£º
ÉÏÃæÒѾ½éÉܹýÁË£¬Ê¹ÓÃNAPIÐèÒªÔÚ±àÒëÄں˵ÄʱºòÑ¡
Ïà¹ØÎĵµ£º
http://www.askwan.com/post/28/
haproxy+keepalived
LinuxÆóÒµ¼¯Èº
http://book.51cto.com/art/200806/76015.htm#
µÚÒ»²½:rsyncͬ²½webÊý¾Ý£¨²âÊÔͨ¹ý²¢ÇÒ×Ô¼º¼ÓÈëÁËsshµÄRSA keyÑéÖ¤£©
http://www.linuxsir.org/main/?q=node/256 rsync ·þÎñÆ÷¼ÜÉè·½·¨ v0.1b £¨ÕýÔÚÐÞ¶©ÖУ©
µÚ¶þ²½:°²×°heartbeat²¢ÇÒ¿ ......
so_test.h£º
#include
#include
void test_a();
void test_b();
void test_c();
test_a.c£º
#include "so_test.h"
void test_a()
{
printf("this is in test_a...\n");
}
test_b.c£º
#include "so_test.h"
void test_b()
{
printf("this is in test_b...\n");
......
access£¨ÅжÏÊÇ·ñ¾ßÓдæÈ¡ÎļþµÄȨÏÞ£©
¡¡¡¡Ïà¹Øº¯Êý stat£¬open£¬chmod£¬chown£¬setuid£¬setgid
¡¡¡¡±íÍ·Îļþ #include<unistd.h>
¡¡¡¡¶¨Ò庯Êý int access(const char * pathname,int mode);
¡¡¡¡º¯Êý˵Ã÷ access()»á¼ì²éÊÇ·ñ¿ÉÒÔ¶Á/дijһÒÑ´æÔÚµÄÎļþ¡£²ÎÊýmodeÓм¸ÖÖÇé¿ö×éºÏ£¬R_OK ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
´ó¼ÒÖªµÀ£¬
MeeGo
×ÀÃæµÄ×î´óÌØµãÊÇʹÓÃ×ÔÓÉ£¨
free
use
£©£¬²»ÂÛÄãÔÚʲôµØ·½£¨Ê²Ã´¹ú¼Ò£©£¬Ò²²»ÂÛÄãÏëÓÃËü¸ÉʲôÊÂÇé¡£ÄÇô£¬
MeeGo
ÊDz»ÊÇÀ¬»ø´úÂëÄØ£¿µ±È»²»ÊÇ¡£ ......
ÔÚÍøÉÏ¿´µ½ÓÐÈË×ܽáµÃ²»´í
1£®¿ª»úÆô¶¯Ê±×Ô¶¯ÔËÐгÌÐò
Linux
¼ÓÔØºó, Ëü½«³õʼ»¯Ó²¼þºÍÉ豸Çý¶¯, È»ºóÔËÐеÚÒ»¸ö½ø³Ìinit¡£init¸ù¾ÝÅäÖÃÎļþ¼ÌÐøÒýµ¼¹ý³Ì£¬Æô¶¯ÆäËü½ø³Ì¡£Í¨³£Çé¿öÏ£¬Ð޸ķÅÖÃ
ÔÚ /etc/rc»ò /etc/rc.d »ò /etc/rc?.d Ŀ¼ÏµĽű¾Îļþ£¬¿ÉÒÔʹinit×Ô¶¯Æô¶¯Æ ......