LinuxϳÌÐòµÄProfile¹¤¾ß
LinuxϳÌÐòµÄProfile¹¤¾ß
ÎÒÃÇÔÚд³ÌÐò£¬ÌرðÊÇǶÈëʽ³ÌÐòµÄʱºò£¬Í¨³£ÐèÒª¶Ô³ÌÐòµÄÐÔÄܽøÐзÖÎö£¬ÒÔ±ã³ÌÐòÄܹ»¸ü¿ì¸üºÃµØÔËÐУ¬´ïµ½ÊµÊ±£¨real-time£©µÄÄ¿µÄ¡£Èç¹û³ÌÐòºÜ´ó£¬·ÖÎöÆðÀ´¾ÍºÜÀ§ÄÑ¡£Èç¹ûÓиö¹¤¾ßÄܹ»×Ô¶¯½øÐгÌÐòµÄÐÔÄÜ·ÖÎö£¬ÄǾÍ×îºÃÁË¡£ÕâÀï½éÉÜÒ»ÖÖLinuxϳÌÐòµÄProfiling¹¤¾ß----GNU profiler¡£
GNU gprofÄܹ»´òÓ¡³ö³ÌÐòÔËÐÐÖи÷¸öº¯ÊýÏûºÄµÄʱ¼ä£¬¿ÉÒÔ°ïÖú³ÌÐòÔ±ÕÒ³öÖڶຯÊýÖкÄʱ×î¶àµÄº¯Êý¡£²úÉú³ÌÐòÔËÐÐʱºòµÄº¯Êýµ÷ÓùØϵ£¬°üÀ¨µ÷ÓôÎÊý£¬¿ÉÒÔ°ïÖú³ÌÐòÔ±·ÖÎö³ÌÐòµÄÔËÐÐÁ÷³Ì¡£ÓÐ Á˺¯ÊýµÄµ÷ÓùØϵ£¬Õâ»áÈÿª·¢ÈËÔ±´ó´óÌá¸ß¹¤×÷ЧÂÊ£¬²»Ó÷ÑÉñµØÈ¥Ò»µãµãÕÒ³ö³ÌÐòµÄÔËÐÐÁ÷³Ì£¬Õâ¶ÔС³ÌÐòÀ´Ëµ¿ÉÄÜЧ¹û²»ÊǺÜÃ÷ÏÔ£¬µ«¶ÔÓÚÓм¸Íò£¬¼¸Ê®Íò´ú ÂëÁ¿µÄ¹¤³ÌÀ´Ëµ£¬Ð§ÂÊÊÇÎãÓ¹ÖÃÒɵģ¡¶øÇÒÕâ¸ö¹¦ÄܶÔÓÚά»¤¾É´úÂë»òÕßÊÇ·ÖÎöOpen SourceÀ´ËµÄÇÊÇÏ൱ÓÕÈ˵ģ¬ÓÐÁ˵÷ÓÃͼ£¬¶Ô³ÌÐòµÄÔËÐпò¼ÜÒ²¾ÍÓÐÁËÒ»¸ö´óÌåÁ˽⣬֪µÀÁ˳ÌÐòµÄ“¹Ç¼Ü“£¬·ÖÎöËüÒ²¾Í²»»áÔÙÄÇôãȻ£¬ÓÈÆäÊǶÔ×Ô¼º²» ÊìϤµÄ´úÂëºÍOpen Source¡£
gprofµÄ»ù±¾Ó÷¨£º
1£® ʹÓà -pg Ñ¡Ïî±àÒëºÍÁ´½ÓÄãµÄÓ¦ÓóÌÐò
ÔÚgcc±àÒë³ÌÐòµÄʱºò£¬¼ÓÉÏ-pgÑ¡ÏÀýÈ磺
gcc -pg -o test test.c
ÕâÑù¾ÍÉú³ÉÁË¿ÉÖ´ÐÐÎļþtest¡£Èç¹ûÊÇ´óÏîÄ¿£¬¾ÍÔÚmakefileÀïÃæÐ޸ıàÒëÑ¡Ï-pg·ÅÔÚÄÇÀﶼÐС£
2£® Ö´ÐÐÄãµÄÓ¦ÓóÌÐòʹ֮Éú³É¹©gprof ·ÖÎöµÄÊý¾Ý
ÔËÐиղŵijÌÐò£º./test£¬ÕâÑù¾ÍÉú³ÉÁËÒ»¸ögmon.outÎļþ£¬¸ÃÎļþ¾Í°üº¬ÁËprofilingµÄÊý¾Ý¡£
3£® ʹÓÃgprof ·ÖÎöÄãµÄÓ¦ÓóÌÐòÉú³ÉµÄÊý¾Ý
gprof test gmon.out > profile.txt
ʹÓÃÉÏÃæµÄÃüÁgprof¾Í¿ÉÒÔ·ÖÎö³ÌÐòtestµÄÐÔÄÜ£¬½«profilingµÄ½á¹û·ÅÔÚprofile.txtÎļþÖУ¬´ò¿ª¾Í¿ÉÒÔ¿´µ½·ÖÎöµÄ½á¹û¡£Í¨¹ý¶Ô½á¹ûµÄ·ÖÎöÀ´¸Ä½øÎÒÃǵijÌÐò£¬´Ó¶ø´ïµ½ÎÒÃǵÄÄ¿µÄ¡£
GNU gprofÊǸöºÜ²»´íµÄ¹¤¾ß£¬´ó¼Òд³ÌÐòʱ¿ÉÒÔ¶àÓÃÓá£ÎÒÏÖÔÚÓÃgprofÀ´profilingÎҵijÌÐò£¬°ÑºÄʱ×î¶àµÄº¯Êý»òÔËËãÕÒ³öÀ´£¬ÓÃFPGAоƬʵÏÖ£¬´Ó¶ø´ïµ½real-timeµÄÄ¿µÄ¡£
gprofʹÓýéÉÜ
gprof½éÉÜ
gprofÊÇGNU profiler¹¤¾ß¡£¿ÉÒÔÏÔʾ³ÌÐòÔËÐеēflat profile”£¬°üÀ¨Ã¿¸öº¯ÊýµÄµ÷ÓôÎÊý£¬Ã¿¸öº¯ÊýÏûºÄµÄ´¦ÀíÆ÷ʱ¼ä¡£Ò²¿ÉÒÔÏÔʾ“µ÷ÓÃͼ”£¬°üÀ¨º¯ÊýµÄµ÷ÓùØϵ£¬Ã¿¸öº¯Êýµ÷Óû¨·ÑÁ˶àÉÙʱ¼ä
Ïà¹ØÎĵµ£º
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌṩÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
Linux³ÖÐøά»¤Ïà¹ØµÄÊý¾Ý½á¹¹£¨ÖîÈçrunqueue¡¢prio_array£©£¬²»¶Ï¸üнø³ÌµÄ¶¯Ì¬ÓÅÏȼ¶£¬²¢ÏàÓ¦µÄµ÷Õûʱ¼äƬ£¬´Ó¶øʵÏÖÁËO(1)¸´ÔӶȵĽø³Ìµ÷¶ÈËã·¨£¬¿ÉÒÔÔÚ³£Á¿Ê±¼äÄÚµ÷¶Èнø³ÌÉĮ̈ÔËÐУ¬¶ø²»ÊÜϵͳÖнø³Ì×ÜÊýµÄÓ°Ïì¡£
ÎÒ¾õµÃÕâÖÁÉÙÄÜ×ôÖ¤Èý¸öµÀÀí£º
£¨1£©Ð§Òæ¿ÉÒÔÀ´×ÔÓÚƽʱµãµãµÎµÎµØ»ýÀÛ£¨¹¦·ò¶¼ÔÚƽʱ£¬¶ø²¢·ÇÖ»Õë¶Ô ......