锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Linux IO緋葷粺鐨勬灦鏋勫浘 涓錛?/span>璁懼-------- 褰卞搷紓佺洏鎬ц兘鐨勫洜绱?/span> 紜洏鐨勮漿閫熷獎(jiǎng)鍝嶇‖鐩樼殑鏁翠綋鎬ц兘銆備竴鑸儏鍐典笅杞熻秺澶э紝鎬ц兘浼?xì)瓒婂ソ銆?/span> 紜洏鐨勬ц兘鍥犵礌涓昏鍖呮嫭涓や釜錛?.騫沖潎璁塊棶鏃墮棿2浼犺緭閫熺巼銆?/span> 騫沖潎璁塊棶鏃墮棿鍖呮嫭涓ゆ柟闈㈠洜绱狅細(xì) 騫沖潎瀵婚亾鏃墮棿(Average Seek Time)鏄寚紜洏鐨勭澶寸Щ鍔ㄥ埌鐩橀潰鎸囧畾紓侀亾鎵闇鐨勬椂闂?/span>銆備竴鑸湪3ms鑷?5ms涔嬮棿銆?/span> 騫沖潎鏃嬭漿絳夊緟鏃墮棿(Latency)鏄寚紓佸ご宸插浜庤璁塊棶鐨勭閬擄紝絳夊緟鎵瑕佽闂殑鎵囧尯鏃嬭漿鑷崇澶翠笅鏂圭殑鏃墮棿銆?/span>涓鑸湪2ms鑷?ms涔嬮棿銆?/span> 浼犺緭閫熺巼(Data Transfer Rate) 紜洏鐨勬暟鎹紶杈撶巼鏄寚紜洏璇誨啓鏁版嵁鐨勯熷害錛屽崟浣嶄負(fù)鍏嗗瓧鑺傛瘡縐掞紙MB/s錛夈傜鐩樻瘡縐掕兘浼犺緭80M~320M瀛楄妭銆?/span> 浼犺緭閫熺巼鍖呮嫭鍐呴儴浼犺緭閫熺巼鍜屽閮ㄤ紶杈撻熺巼銆?/span> 鍐呴儴浼犺緭鐜?Internal Transfer Rate) 涔熺О涓烘寔緇紶杈撶巼(Sustained Transfer Rate)錛屽畠鍙嶆槧浜嗙‖鐩?/span>緙撳啿鍖?/span>鏈敤鏃剁殑鎬ц兘銆傚唴閮ㄤ紶杈撶巼涓昏渚濊禆浜庣‖鐩樼殑鏃嬭漿閫熷害銆?/span> 澶栭儴浼犺緭鐜囷紙External Transfer Rate錛変篃縐頒負(fù)紿佸彂鏁版嵁浼犺緭鐜?/span>錛?span>Burst Data Transfer Rate錛夋垨鎺ュ彛浼犺緭鐜囷紝瀹冩爣縐扮殑鏄?/span>緋葷粺鎬葷嚎涓庣‖鐩樼紦鍐插尯涔嬮棿鐨勬暟鎹紶杈撶巼錛屽閮ㄦ暟鎹紶杈撶巼涓?/span>紜洏鎺ュ彛綾誨瀷鍜?/span>紜洏緙撳瓨鐨勫ぇ灝忔湁鍏熾係TAT2 鐨勪紶杈撻熺巼鍦?00MB/s綰у埆銆?/span> 鍥犳鍦ㄧ‖浠剁駭涓婏紝鎻愰珮紓佺洏鎬ц兘鐨勫叧閿富瑕佹槸闄嶄綆騫沖潎璁塊棶鏃墮棿銆?/span> 浜岋紟璁懼椹卞姩 鍐呭瓨鍒扮‖鐩樼殑浼犺緭鏂瑰紡錛歱oll錛屼腑鏂紝DMA DMA錛氬綋 CPU 鍒濆鍖栬繖涓紶杈撳姩浣滐紝浼犺緭鍔ㄤ綔鏈韓鏄敱 DMA 鎺у埗鍣?nbsp;鏉ュ疄琛屽拰瀹屾垚銆?/span> DMA鎺у埗鍣ㄨ幏寰楁葷嚎鎺у埗鏉冨悗錛孋PU鍗沖埢鎸傝搗鎴栧彧鎵ц鍐呴儴鎿嶄綔錛岀敱DMA鎺у埗鍣ㄨ緭鍑鴻鍐欏懡浠わ紝鐩存帴鎺у埗RAM涓嶪/O鎺ュ彛榪涜DMA浼犺緭銆侱MA姣忔浼犻佺殑鏄鐩樹笂鐩擱偦鐨勬墖鍖恒係catter-gather DMA鍏佽浼犻佷笉鐩擱偦鐨勬墖鍖恒?/span> CPU鎬ц兘涓庣‖鐩樹笌鍐呭瓨鐨勬暟鎹紶杈撻熺巼鍏崇郴涓嶅ぇ銆?/span> 璁懼椹卞姩鍐呮湁涓涓粨鏋勭鐞嗙潃IO鐨勮姹傞槦鍒?/span> structrequest_queue錛坕nclude/linux/Blkdev.h錛?/span> 榪欓噷涓嶄粎浠呮湁璇誨啓璇鋒眰鐨勬暟鎹潡錛岃繕鏈夌敤浜嶪O璋冨害鐨勫洖璋冨嚱鏁扮粨鏋勩傛瘡嬈¢渶瑕佷紶杈撶殑鏃跺欙紝灝變粠闃熷垪涓夊嚭涓涓暟鎹潡浜ょ粰DMA榪涜浼犺緭銆?/span> 鎵浠?a name="_GoBack">IO璋冨害鐨勫洖璋冨嚱鏁拌繖鏄檷浣庡鉤鍧囪闂殑鏃墮棿鐨勫叧閿?/span> 涓夛紟OS IO璋冨害鍣?/span> Linux kernel鎻愪緵浜嗗洓涓皟搴﹀櫒渚涚敤鎴烽夋嫨銆備粬浠槸noop,cfq,deadline,as銆傚彲浠ュ湪緋葷粺鍚姩鏃惰緗唴鏍稿弬鏁癳levator=<name>鏉ユ寚瀹氶粯璁ょ殑璋冨害鍣ㄣ備篃鍙互鍦ㄨ繍琛屾椂涓烘煇涓潡璁懼璁劇疆IO璋冨害紼嬪簭銆?/span> 涓嬮潰鏉ョ畝瑕佷粙緇嶈繖鍥涗釜璋冨害鍣ㄧ殑鐢墊璋冨害綆楁硶銆?/span> Noop錛氭渶綆鍗曠殑璋冨害綆楁硶銆傛柊鐨勮姹傛繪槸琚坊鍔犲埌闃熷ご鎴栬呴槦灝撅紝鐒跺悗鎬繪槸浠庨槦澶翠腑閫夊嚭灝嗚琚鐞嗙殑璇鋒眰銆?/span> CFQ錛氾紙Complete FarinessQueueing錛夊畠鐨勭洰鏍囨槸鍦ㄦ墍鏈夎姹傜殑榪涚▼涓鉤鍧囧垎閰岻O鐨勫甫瀹姐傚洜姝わ紝瀹冧細(xì)鏍規(guī)嵁榪涚▼鍒涘緩鑷繁鐨勮姹傞槦鍒楋紝鐒跺悗灝咺O璇鋒眰鏀懼叆鐩稿簲鐨勯槦鍒椾腑銆傚湪浣跨敤杞漿娉曚粠姣忎釜闈炵┖鐨勯槦鍒椾腑鍙栧嚭IO璇鋒眰銆?/span> Deadline錛氫嬌鐢ㄤ簡鍥涗釜闃熷垪錛屼袱涓互紓佺洏鍧楀簭鍙鋒帓搴忕殑璇誨啓闃熷垪錛屼袱涓互鏈鍚庢湡闄愭椂闂存帓搴忕殑璇誨啓闃熷垪銆傜畻娉曢鍏堢‘瀹氫笅涓涓鍐欑殑鏂瑰悜錛岃鐨勪紭鍏堢駭楂樹簬鍐欍傜劧鍚庢鏌ヨ閫夋柟鍚戠殑鏈鍚庢湡闄愰槦鍒楋細(xì)濡傛灉鏈鍚庢湡闄愭椂闂寸殑闃熷垪涓湁瓚呮椂鐨勮姹傦紝鍒欏皢鍒氭墠鐨勮姹傜Щ鍔ㄨ嚦闃熷熬錛岀劧鍚庡湪紓佺洏鍙鋒帓搴忛槦鍒椾腑浠庤秴鏃惰姹傚紑濮嬪鐞嗐傚綋澶勭悊瀹屼竴涓柟鍚戠殑璇鋒眰鍚庯紝鍦ㄥ鐞嗗彟涓涓柟鍚戠殑璇鋒眰銆傦紙璇昏姹傜殑瓚呮椂鏃墮棿鏄?00ms錛屽啓璇鋒眰鐨勮秴鏃舵椂闂存槸5s錛?/span> Anticipatory錛氬畠鏄渶澶嶆潅鐨処O璋冨害綆楁硶銆傚拰deadline綆楁硶涓鏍鋒湁鍥涗釜闃熷垪銆傝繕闄勫甫浜嗕竴浜涘惎鍙戝紡絳栫暐銆傚畠浼?xì)浠庡綋鍓嶇殑纾佸ご浣嵕|悗鐨勭鐩樺彿涓夋嫨璇鋒眰銆傚湪璋冨害浜嗕竴涓敱P榪涚▼鐨処O璇鋒眰鍚庯紝浼?xì)妫鏌ヤ笅涓涓姹傦紝濡傛灉榪樻槸P榪涚▼鐨勮姹傦紝鍒欑珛鍗寵皟搴︼紝濡傛灉涓嶆槸錛屽悓鏃墮嫻婸榪涚▼寰堝揩浼?xì)鍙戝國櫙锋眰锛屽垯杩樺粔檿垮ぇ绾?ms鐨勬椂闂寸瓑寰匬榪涚▼鐨処O璇鋒眰銆?/span> Write/Read鍑芥暟 浠xt3鐨剋rite涓轟緥錛?/span> 緋葷粺璋冪敤write()鐨勪綔鐢ㄥ氨鏄慨鏀歸〉楂橀熺紦瀛樺唴鐨勪竴浜涢〉鐨勫唴瀹癸紝濡傛灉欏甸珮閫熺紦瀛樺唴娌℃湁鎵瑕佺殑欏靛垯鍒嗛厤騫惰拷鍔犺繖浜涢〉銆?/span> 褰撹剰欏佃揪鍒頒竴瀹氭暟閲忔垨鑰呰秴鏃跺悗錛屽皢鑴忛〉鍒峰洖紜洏銆備篃鍙互鎵ц鐩稿叧緋葷粺璋冪敤銆?/span> 涓轟粈涔堣杈懼埌涓瀹氭暟閲忥紝鏄洜涓哄歡榪熷啓鑳藉湪涓瀹氬眰搴︿笂鎻愰珮緋葷粺鐨勬ц兘錛岃繖涔熶嬌寰楀潡璁懼鐨勫鉤鍧囪璇鋒眰浼?xì)澶氫簬鍐欒h眰銆?/span> 鍦ㄧ▼搴忎腑璋冪敤write鍑芥暟錛屽皢榪涘叆緋葷粺璋冪敤f_op->write銆傝繖涓嚱鏁板皢璋冪敤ext3鐨刣o_sync_write銆傝繖涓嚱鏁板皢鍙傛暟灝佽鍚庤皟鐢╣eneric_file_aio_write銆傜敱鍙傛暟鍚嶅彲浠ョ湅鍑哄悓姝ュ啓鍙樻垚浜嗗紓姝ュ啓銆傚鏋滄病鏈夋爣璁癘_DIRECT錛屽皢璋冪敤鍑芥暟generic_file_buffered_write灝嗗啓鐨勫唴瀹瑰啓榪沰ernel鐨勯珮閫熼〉緙撳瓨涓侭uffer鏄互page涓哄崟浣嶅嵆4k銆備箣鍚庡綋璋冪敤cond_resched()榪涜榪涚▼鐨勮皟搴︼紝DMA浼?xì)灏哹uffer涓殑鍐呭鍐欒繘紜洏銆?/span> 鎵浠ュ綋姣忔浠?k涓哄崟浣嶅啓鍏ョ‖鐩樻椂鏁堢巼浼?xì)杈惧埌鏈楂樸備笅闈㈡槸UNIX鐜楂樼駭緙栫▼鐨勫疄楠岀粨鏋滐細(xì) 涓嬪浘鏄痩inux 鐨勫潡璁懼鐨勬暟鎹搷浣滃眰嬈★細(xì) Sector鎵囧尯錛氭槸璁懼椹卞姩鍜孖O璋冨害紼嬪簭澶勭悊鏁版嵁綺掑害銆?/span> Block鍧楋細(xì)鏄疺FS鍜屾枃浠剁郴緇熷鐞嗘暟鎹殑綺掑害銆傚叾澶у皬涓嶅敮涓錛屽彲浠ユ槸512,1024,2048,4096瀛楄妭銆傚唴鏍告搷浣滅殑鍧楀ぇ灝忔槸4096瀛楄妭銆?/span> Segment孌碉細(xì)鏄疍MA浼犻佺殑鍗曚綅銆傛瘡涓涓鍖呭惈浜嗙浉閭?cè)潥勬墖鍖哄Q屽畠鑳戒嬌DMA浼犻佷笉鐩擱偦鐨勬墖鍖恒?/span> 鍥涳紟鐢ㄦ埛紼嬪簭 鏍規(guī)嵁浠ヤ笂鐨勫垎鏋愶紝鎴戜滑鐨?span>write buffer涓鑸緗負(fù)4K鐨勫嶆暟銆?/span> 鍦ㄧ▼搴忎腑鏈夋剰璇嗙殑寤惰繜鍐欍傝繖涓槸os鐨勭瓥鐣ワ紝褰撶劧涔熷彲浠ュ簲鐢ㄥ埌紼嬪簭鐨勮璁′腑銆傚綋鐒朵篃浼?xì)鏈壘~虹偣錛?.濡傛灉紜歡閿欒鎴栨帀鐢?shù)锛屽垯浼?xì)涓㈠け鍐呭錛堝仛棰濆鐨勫浠斤級2.闇瑕侀澶栫殑鍐呭瓨絀洪棿銆傦紙鐗虹壊鍐呭瓨鏉ユ彁楂業(yè)O鐨勬晥鐜囷級 鎴戜滑榪橀渶鏍規(guī)嵁緋葷粺鐨処O璋冨害鍣ㄧ殑璋冨害絳栫暐錛岃璁″嚭涓嶅悓鐨処O絳栫暐銆傚敖閲忛檷浣庣鐩樼殑騫沖潎璁塊棶鏃墮棿錛岄檷浣庤姹傞槦鍒楋紝鎻愰珮鏁版嵁浼犺緭鐨勯熺巼銆?/span> 浜旓紟鐩戞帶紜洏鐨勫伐鍏峰拰鎸囨爣 Iostat–x –k 1 -x鏄劇ず鏇村鐨勬秷鎭?nbsp;-k鏁版嵁浠B涓哄崟浣?1姣忕鏄劇ず涓嬈?/span> 杈撳嚭鏄劇ず鐨勪俊鎭?/span> Iowait錛歝pu絳夊緟鏈畬鎴愮殑IO璇鋒眰鑰岀┖闂茬殑鏃墮棿鐨勬瘮渚嬨?/span> Idle錛歝pu絀洪棽涓旀棤IO璇鋒眰鐨勬瘮渚嬨?/span> rrqm/s錛氭瘡縐掕繖涓澶囩浉鍏崇殑璇誨彇璇鋒眰鏈夊灝戣Merge浜嗐?/span> wrqm/s錛氭瘡縐掕繖涓澶囩浉鍏崇殑鍐欏叆璇鋒眰鏈夊灝戣Merge浜嗐?/span> rsec/s錛氭瘡縐掕鍙栫殑鎵囧尯鏁幫紱 wsec/錛氭瘡縐掑啓鍏ョ殑鎵囧尯鏁般?/span> r/s錛氭瘡縐掑畬鎴愮殑璇?I/O 璁懼嬈℃暟銆傚嵆 delta(rio)/s w/s錛氭瘡縐掑畬鎴愮殑鍐?I/O 璁懼嬈℃暟銆傚嵆 delta(wio)/s await錛氭瘡涓涓狪O璇鋒眰鐨勫鐞嗙殑騫沖潎鏃墮棿錛堝崟浣嶆槸姣錛夈傚寘鎷姞鍏ヨ姹傞槦鍒楀拰鏈嶅姟鐨勬椂闂淬?/span> svctm: 騫沖潎姣忔璁懼I/O鎿嶄綔鐨勬湇鍔℃椂闂淬?/span> avgrq-sz: 騫沖潎姣忔璁懼I/O鎿嶄綔鐨勬暟鎹ぇ灝?(鎵囧尯)銆傚嵆 delta(rsect+wsect)/delta(rio+wio) %util錛氬湪緇熻鏃墮棿鍐呮墍鏈夊鐞咺O鏃墮棿錛岄櫎浠ユ誨叡緇熻鏃墮棿銆備緥濡傦紝濡傛灉緇熻闂撮殧1縐掞紝璇ヨ澶囨湁0.8縐掑湪澶勭悊IO錛岃?.2縐掗棽緗紝閭d箞璇ヨ澶囩殑%util = 0.8/1 = 80%錛屾墍浠ヨ鍙傛暟鏆楃ず浜嗚澶囩殑綣佸繖紼嬪害銆備竴鑸湴錛屽鏋滆鍙傛暟鏄?00%琛ㄧず璁懼宸茬粡鎺ヨ繎婊¤礋鑽瘋繍琛屼簡錛堝綋鐒跺鏋滄槸澶氱鐩橈紝鍗充嬌%util鏄?00%錛屽洜涓虹鐩樼殑騫跺彂鑳藉姏錛屾墍浠ョ鐩樹嬌鐢ㄦ湭蹇呭氨鍒頒簡鐡墮錛夈?/span> 涓嬮潰鎴戜滑鍋氫竴涓疄楠屾潵鍒嗘瀽涓涓?/span> 鎴戜滑浣跨敤鍛戒護(hù) time dd if=/dev/zero of=/home/zhouyuan/mytest bs=1M count=3000 鍚憁ytest鍐欏叆鏁版嵁錛屽啓鍏?G銆?/span> 鎴彇閮ㄥ垎鐨勭姸鎬佺洃鎺э細(xì) 濡傚浘2錛屽綋涓ゆ潯鏁版嵁 iowait 杈懼埌浜?/span> 99% 浠ヤ笂錛屽啓鍏ョ殑鏁版嵁鏄?錛岃繖鏄洜涓篋MA灝嗗唴瀛樼殑涓殑鏁版嵁浼犺緭緇欒澶囥傜粨鍚堝浘1鐨勫墠涓ゆ潯鏁版嵁錛屽埄鐢ㄧ巼杈懼埌浜?9%+鍗存病鏈夊啓鍏ョ殑紓佺洏鍧椼?/span> 濡傚浘3錛宨owait涓嬮檷錛岃鏄巆pu寮濮嬫墽琛岀浉鍏崇▼搴忥紝鑰屾鏃跺潡璁懼寮濮嬪啓鍏ョ殑鏁版嵁銆傝繖涓や釜鎿嶄綔鏄紓姝ヨ繘琛岀殑銆?/span> Vmstat–k –n 1 Swap 銆銆si: 浠庣鐩樹氦鎹㈠埌鍐呭瓨鐨勪氦鎹㈤〉鏁伴噺錛屽崟浣嶏細(xì)KB/縐?/span> 銆銆so: 浠庡唴瀛樹氦鎹㈠埌紓佺洏鐨勪氦鎹㈤〉鏁伴噺錛屽崟浣嶏細(xì)KB/縐?/span> IO 銆銆bi: 浠?/span>鍧楄澶囨帴鍙楃殑鍧楁暟錛屽崟浣嶏細(xì)鍧?縐?/span> 銆銆bo: 鍙戦佸埌鍧楄澶囩殑鍧楁暟錛屽崟浣嶏細(xì)鍧?縐?/span> 浠庡浘涓垜浠彲浠ョ湅鍑虹郴緇熺殑寤惰繜鍐欍?/span>
涓よ呯殑涓昏宸埆鏄叡浜唴瀛樼殑澶у皬
1.Posix鍏變韓鍐呭瓨澶у皬鍙氳繃鍑芥暟ftruncate闅忔椂淇敼
2.System V鍏變韓鍐呭瓨澶у皬鍦ㄥ垱寤烘椂灝卞凡緇忕‘瀹氾紝鑰屼笖鏈澶у兼牴鎹郴緇熸湁鎵涓嶅悓
Posix鍏變韓鍐呭瓨
#include <sys/mman.h> 錛坢map錛宮unmap錛宮sync錛宻hm_open錛宻hm_unlink錛?br />
鏈涓昏鐨勫嚱鏁? -- mmap
void* mmap(void* addr,size_t len,int prot,int flags,int fd,off_t offset)
鍑芥暟灝嗕竴涓彞鏌勬槧灝勫埌鍐呭瓨涓紝榪欎釜鍙ユ焺鍙互鏄痮pen鐨勬枃浠跺彞鏌勶紝涔熷彲浠ユ槸shm_open鐨勫叡浜唴瀛樺尯瀵硅薄銆傚綋fd=-1鏃朵負(fù)鍖垮悕鍏變韓鍐呭瓨銆?br /> *nix涓鍒囩殕鏂囦歡鐨勮鐐癸紝shm_open涔熸槸鍦?dev/shm鐩綍涓嬪垱寤轟竴涓枃浠跺璞★紝榪斿洖瀵硅薄鐨勬弿榪扮銆?br /> mmap灝嗗彞鏌勪綔涓哄叡浜唴瀛樼殑搴曞眰鏀拺瀵硅薄錛屾槧灝勫埌鍐呭瓨涓紝榪欐牱鍙互涓嶉氳繃read銆亀rite鍦ㄨ繘紼嬩箣闂村叡浜唴瀛樸傜敱姝ゆ帹嫻嬩竴涓嬶紝鍦?nix鐨勮繘紼嬮棿浼犻掓暟鎹洿鍔犲師濮嬬殑鏂規(guī)硶鏄繘紼嬮棿璇誨啓涓涓枃浠躲備絾鏄綣佺殑open銆乺ead銆亀rite銆乴seek緋葷粺璋冪敤浼?xì)娑堣楄繃澶氱殑璁$畻璧勬簮銆傛墍浠ユ兂鍒頒簡灝嗚繖涓枃浠跺彞鏌勬槧灝勫埌鍐呭瓨涓紝榪欐牱灝辨彁楂樹簡榪涚▼闂翠紶閫掓暟鎹殑鏁堢巼銆?br />
闇瑕佹敞鎰忕殑鍑芥暟 -- msync
褰撲慨鏀逛簡鍐呭瓨鏄犲皠鍖虹殑鍐呭瓨鍚庯紝鍐呮牳浼?xì)鍦ㄦ煇涓椂鍒粸畣鏂囦欢鐨勫唴瀹规洿鏂般備負(fù)浜嗙‘淇℃枃浠惰鏇存柊錛岃皟鐢ㄥ嚱鏁癿sync銆傛枃浠剁殑鏇存柊鍙互鏄悓姝ワ紙MS_SYNC錛変篃鍙互鏄紓姝ワ紙MS_ASYNC錛夈傦紙浼拌榪欓噷涔熸槸璋冪敤浜嗗嚱鏁皐rite鏇存柊鏂囦歡錛?br />
System V鍏變韓鍐呭瓨
#include <sys/shm.h> (shmget,shmat,shmdt,shmctl)
鐢變簬System V鐨勫叡浜唴瀛樻湁澶у皬鐨勯檺鍒訛紝鎵浠ュ彲鑰冭檻錛屼嬌鐢ㄥ叡浜唴瀛樻暟緇勬潵瑙e喅榪欎釜闂傝櫧鐒舵暟緇勭殑澶у皬鍗充竴涓繘紼嬪彲浠ヨ幏鍙栧叡浜唴瀛樼殑鏁伴噺涔熸槸鏈夐檺鍒訛紝浣嗘槸鍙互緙撹ВSystem V鍗曚釜鍏變韓鍐呭瓨榪囧皬鐨勯棶棰樸?img src ="http://www.shnenglu.com/range/aggbug/184665.html" width = "1" height = "1" />
]]>
]]>
鐢ㄤ簬鍦╟涓瞙aystack涓煡鎵綾涓瞡eedle錛屽拷鐣ュぇ灝忓啓銆傚鏋滄壘鍒板垯榪斿洖needle涓插湪haystack涓蹭腑絎竴嬈″嚭鐜扮殑浣嶇疆鐨刢har鎸囬拡
鍦ㄥ疄闄呯殑搴旂敤涓鏋滃彧鍔犱笂澶存枃浠訛紝褰撶紪璇戞椂浼?xì)鍑虹? warning: assignment makes pointer from integer without a cast
榪欐槸鍥犱負(fù)鍑芥暟鐨勫0鏄庡湪璋冪敤涔嬪悗銆傛湭緇忓0鏄庣殑鍑芥暟榛樿榪斿洖int鍨嬨?/span>
鍥犳瑕佸湪#include鎵鏈?/span>澶存枃浠朵箣鍓嶅姞 #define _GNU_SOURCE 錛屼互姝よВ鍐蟲闂銆?/span>
]]>
avgqu-sz: 騫沖潎I/O闃熷垪闀垮害銆傚嵆 delta(aveq)/s/1000 (鍥犱負(fù)aveq鐨勫崟浣嶄負(fù)姣)銆?/span>
]]>
涔嬪墠娌℃帴瑙﹁繃榪欎釜緙栬瘧瀹忥紝鐜板湪鏉ヨ鐪熷涔?fàn)涔嬨?/span>
棣栧厛google涔?/span>~~
鍘熸潵#pragma pack鏈夊嚑縐嶅艦寮忥紝鎴戞墍鎺ヨЕ鍒扮殑鏄?/span>#pragma pack(n)錛屽嵆鍙橀噺浠?/span>n瀛楄妭瀵歸綈銆?/span>
鍙橀噺瀵歸綈鍦ㄦ瘡涓郴緇熶腑鏄笉涓鏍風(fēng)殑錛岄粯璁ょ殑瀵歸綈鏂瑰紡鑳芥湁鏁堢殑鎻愰珮cpu鍙栨寚鍙栨暟鐨勯熷害錛屼絾鏄彲鑳戒細(xì)嫻垂涓瀹氱殑絀洪棿銆傚湪緗戠粶紼嬪簭涓噰鐢?/span>#pragma pack(1),鍗沖彉閲忕揣緙╋紝涓嶄絾鍙互鍑忓皯緗戠粶嫻侀噺錛岃繕鍙互鍏煎鍚勭緋葷粺錛屼笉浼?xì)鍥犱负绯痪l熷榻愭柟寮忎笉鍚岃屽鑷磋В鍖呴敊璇?/span>
浜嗚В浜嗘蹇靛拰浼樼偣錛岀幇鍦ㄦ垜浠氨鏉ユ祴璇曚箣~
騫沖彴錛?/span>CPU—Pentium E5700 鍐呭瓨—2G
1.鎿嶄綔緋葷粺錛?/span>ubuntu 11.04 32bit 緙栬瘧鍣細(xì)G++ 4.5.2
2.鎿嶄綔緋葷粺錛?/span>windows xp 緙栬瘧鍣細(xì)VS2010
鍏堢湅絎竴涓祴璇曘?/span>
緇撴瀯浣撳湪姝e父鎯呭喌鍜岀揣緙╂儏鍐靛湪浠ヤ笂涓嶅悓鐜涓嬪崰鐢ㄧ殑鍐呭瓨澶у皬銆?/span>
嫻嬭瘯緇撴灉涓猴細(xì)
1錛?br />
2錛?br />
嫻嬭瘯緇撴灉鍒嗘瀽錛?/span>
鍙互鐪嬪嚭绱х緝鍚庣粨鏋勪綋鐨勫ぇ灝忎負(fù)15錛屾槸緇撴瀯浣撳唴緗被鍨嬪ぇ灝忕殑鍜屻備絾鏄湪榛樿鎯呭喌涓嬶紝緇撴瀯浣撶殑澶у皬閮芥槸瀵歸綈瀛楄妭鏁扮殑鍊嶆暟銆?/span>ubuntu涓?/span>pack鍙渶瑕?/span>20涓瓧鑺傦紝鑰?/span>windows瑕?/span>24涓瓧鑺傘傝繖鏄洜涓?/span>ubuntu鏄互4瀛楄妭瀵歸綈錛岃?/span>windows鍒欐槸浠ユ渶澶х殑鍐呯疆綾誨瀷鐨勫瓧鑺傛暟瀵歸綈錛屽湪緇撴瀯浣撳唴鏈澶х殑鍐呯疆綾誨瀷涓?/span>double錛屽叾澶у皬涓?/span>8涓瓧鑺傘備粬浠湪鍐呭瓨涓殑瀵歸綈鏂瑰紡濡備笅鍥撅細(xì)
1錛?/span>
2錛?/span>
榪橀渶娉ㄦ剰鐨勬槸錛?/span>鍦ㄥ榻愮被鍨嬬殑鍐呴儴閮芥槸浠?/span>2瀛楄妭瀵歸綈鐨勩?/span>
緇撹錛?/span>鍦ㄩ粯璁ゆ儏鍐典笅錛?/span>linux鎿嶄綔緋葷粺鏄互4瀛楄妭瀵歸綈錛?/span>windows鎿嶄綔緋葷粺鍒欐槸浠ユ渶澶х殑鍐呯疆綾誨瀷瀵歸綈銆?/span>
絎簩涓祴璇?/span>
涓涓粨鏋勪綋鍐呭寘鍚彟澶栦竴涓粨鏋勪綋錛屽叾澶у皬鐨勬儏鍐點(diǎn)?/span>
鍐呴儴鐨勭粨鏋勪綋涓?/span>
澶栭儴鐨勭粨鏋勪綋涓?/span>
1 struct complex _pack{
鎴戜滑鏈夊洓縐嶆儏鍐碉細(xì)
1. pack绱х緝錛?/span>complex _pack绱х緝
2. pack绱х緝錛?/span>complex _pack榛樿
3. pack榛樿錛?/span>complex _pack绱х緝
4. pack榛樿錛?/span>complex _pack榛樿
浠ヤ笅鐨勬帓鍒楀潎鎸夋欏哄簭銆?/span>
嫻嬭瘯鐨勭粨鏋?/span>
1錛?/span>
2錛?/span>
嫻嬭瘯緇撴灉鍒嗘瀽錛?/span>
鍦ㄤ袱涓搷浣滅郴緇熶笅錛岄櫎浜嗙涓縐嶆儏鍐?/span>----鍐呯粨鏋勪綋鍜屽緇撴瀯浣撻兘绱х緝----鐩稿悓涔嬪錛屽叾浠栦笁縐嶆儏鍐甸兘涓嶇浉鍚屻傛垜浠彲浠ユ牴鎹亸縐葷敾鍑虹粨鏋勪綋鍦ㄥ唴瀛樹腑鐨勬儏鍐點(diǎn)傜涓縐嶆儏鍐電渷鐣ャ?/span>
1錛?/span>
2錛?/span>
緇撹錛?/span>#pragma pack鍙獎(jiǎng)鍝嶅綋鍓嶇粨鏋勪綋鐨勫彉閲忕殑瀵歸綈鎯呭喌錛屽茍涓嶄細(xì)褰卞搷緇撴瀯浣撳唴閮ㄧ殑緇撴瀯浣撳彉閲忕殑鎺掑垪鎯呭喌銆傛垨鑰呰#pragma pack鐨勪綔鐢ㄥ煙鍙槸涓灞?/span>銆傛垜浠敱絎笁縐嶆儏鍐碉紝鍐呴儴緇撴瀯浣撴甯革紝澶栭儴緇撴瀯浣撶揣緙╋紝鍙互寰楀嚭緇撴瀯浣撶殑瀵歸綈鏄寜鍋忕Щ璁$畻鐨勩?/span>
榪欓噷榪樻湁涓涓棶棰樻病瑙e喅錛屼負(fù)浠涔堢浜岀鎯呭喌鍐呴儴緇撴瀯浣撶殑鍋忕Щ閮芥槸1?涓嶆槸4鎴栬?錛?/p>
鍦ㄣ?/span>Behavior and Classification of NAT Devices and Implications for NAT Traversal銆嬩竴鏂囦腑灝辨妸绔彛鏄犲皠鐨勮涓哄垎鎴愬洓縐嶏紝鍏朵腑鍖呮嫭淇濈暀绔彛錛屼笉淇濈暀绔彛錛岀鍙i噸杞斤紝绔彛澶嶇敤銆傝繖鍥涚鍒嗙被鏈緇堝尯鍒嗕簡NAT鐨勫洓縐嶇被鍨嬪嵆Full cone NAT錛?/span>Symmetric NAT錛?/span>Port-Restrictes cone NAT 錛?/span>Address-Restriced cone NAT銆?/span>
涓轟簡浣胯鐩栫綉緇滀腑鐨勮妭鐐圭浉浜掗氫俊錛屾垜浠渶瑕佽繘琛?/span>NAT絀胯秺銆傚湪銆?/span>A NAT Traversal Mechanism for Peer-To-Peer Networks銆嬩竴鏂囩浠嬬粛浜嗘牴鎹袱绔笉鍚岀殑NAT綾誨瀷瀵瑰簲鐨勫洓縐?/span>NAT絀胯秺鏂規(guī)銆傚涓嬪浘
闄や簡鐩存帴榪炴帴錛屽弽鍚戣繛鎺ャ佹墦媧炲拰渚濊禆閮介渶瑕佺涓夊彴涓繪満鐨勫府鍔┿?/span>
鍦ㄣ?/span>Characterization and Measurement of TCP Traversal through NATs and Firewalls銆嬩竴鏂囦腑浠嬬粛浜?/span>TCP絀胯秺鐨勬柟娉曘傚湪STUNT#2鏂規(guī)硶涓紝絎笁鍙頒富鏈哄拰涓ゅ彴闇瑕佽繛鎺ョ殑涓繪満閮芥湁闀胯繛鎺ワ紝褰撲竴鏂歸渶瑕佸彂璧鋒潵榪炴帴鏃訛紝鍚戠涓夊彴涓繪満鍙戣姹傦紝絎笁鍙頒富鏈哄悜琚姹傜殑涓繪満鍙戦侀個(gè)璇鳳紝姝ゆ椂闇瑕佽繛鎺ョ殑涓繪満閮藉悜瀵規(guī)柟鍙戦?/span>SYN鍖咃紝姝ゆ椂鍙屾柟鐨勯槻鐏閮芥湁浜嗘礊錛屽彧瑕佹湁涓鏂圭殑SYN鍖呭埌杈懼鏂逛富鏈猴紝榪炴帴灝變細(xì)琚緩绔嬨?/span>Relay鏂規(guī)硶闇瑕佽楄垂鐨勪唬浠峰お澶э紝鍦?/span>P2P搴旂敤涓竴鑸細(xì)娑堟瀬鐨勫鐞嗗弻鏂歸兘鏄縐?/span>NAT鐨勬儏鍐點(diǎn)?/span>