亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4206 | 回復: 6
打印 上一主題 下一主題

[算法] 動態(tài)共享內(nèi)存池設計 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-11-02 17:28 |只看該作者 |倒序瀏覽
在大型并發(fā)系統(tǒng)中進程之間通訊一般采用共享內(nèi)存,成千上萬不同大小的共享內(nèi)存隨時在創(chuàng)建,用完之后就立即釋放,如果采用單個共享內(nèi)存獨立創(chuàng)建和釋放,

多好的服務器也無法承載,唯有采用動態(tài)共享內(nèi)存池,一次申請創(chuàng)建一塊大的共享內(nèi)存區(qū),并劃分成無數(shù)的小塊內(nèi)存,后續(xù)進程間通訊只需要memcpy賦值內(nèi)存塊,傳遞

內(nèi)存塊地址就ok。

1.首先在系統(tǒng)中開辟一塊大的共享內(nèi)存區(qū)10G,這塊有個疑問:共享內(nèi)存和服務器的物理內(nèi)存有沒有關系,最大共享內(nèi)存能不能超過物理內(nèi)存;

2.再次參考一般的二維哈希共享內(nèi)存設計,10G空間可以存儲最大數(shù)為100萬個元素(下面結(jié)構(gòu)體),10級Hash,每次賦值根據(jù)nKey定位,釋放也可以根據(jù)nkey定位,

效率不用說,肯定很快。

struct KEY_INFO_T
{
    unsigned int nKey;
    unsigned int nLength;
    unsigned char* sValue[1024];//1K字節(jié)
};

但是上面的效率有個前提就是每次傳遞的數(shù)據(jù)不能超1k字節(jié),如果將結(jié)構(gòu)體改為以下10K字節(jié)(應該足夠大),則可以存儲10萬個元素(下面結(jié)構(gòu)體),10級Hash,

但是如果傳遞的消息只有1K的話,9K浪費了,比較可惜,如果服務器不能申請比較大的共享內(nèi)存區(qū),浪費之后沒有空間就得等待,直接影響效率。

struct KEY_INFO_T
{
    unsigned int nKey;
    unsigned int nLength;
    unsigned char* sValue[1024*10];//10K字節(jié)

};

有沒有更好的動態(tài)共享內(nèi)存池設計方法,希望大家不吝賜教。

論壇徽章:
3
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亞洲杯之中國
日期:2015-04-22 15:52:45
2 [報告]
發(fā)表于 2015-11-03 17:22 |只看該作者
成千上萬不同大小的共享內(nèi)存隨時在創(chuàng)建,用完之后就立即釋放


誰見過這種模型?.....直接把作者拖出來打死---世界上不可能有比這種設計更垃圾的進程間通訊模型了.

所以一開始提出一個很高大上的問題, 結(jié)果問了一個弱弱的問題......
答題的心情都沒有---只想說一句:
懶得回答"要怎么做", 而是"要做什么"本來就是無意義的事情.

論壇徽章:
0
3 [報告]
發(fā)表于 2015-11-03 18:16 |只看該作者
回復 2# hanxin83


    這個需求是肯定會有的,我們系統(tǒng)有上百個進程,每個進程有3個隊列,每個隊列的的消息內(nèi)容部分用共享內(nèi)存存儲,便于進程間通信,

關鍵在于你怎么設計。

論壇徽章:
0
4 [報告]
發(fā)表于 2015-11-03 18:24 |只看該作者
鑒于申請?zhí)蟮墓蚕韮?nèi)存在映射時會影響到物理內(nèi)存,還得想辦法

將共享內(nèi)存空間壓縮,最初的設計方法浪費太多的內(nèi)存。

論壇徽章:
36
子鼠
日期:2013-08-28 22:23:29黃金圣斗士
日期:2015-12-01 11:37:51程序設計版塊每日發(fā)帖之星
日期:2015-12-14 06:20:00CU十四周年紀念徽章
日期:2015-12-22 16:50:40IT運維版塊每日發(fā)帖之星
日期:2016-01-25 06:20:0015-16賽季CBA聯(lián)賽之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之福建
日期:2016-04-07 11:25:2215-16賽季CBA聯(lián)賽之青島
日期:2016-04-29 18:02:5915-16賽季CBA聯(lián)賽之北控
日期:2016-06-20 17:38:50技術圖書徽章
日期:2016-07-19 13:54:03程序設計版塊每日發(fā)帖之星
日期:2016-08-21 06:20:00
5 [報告]
發(fā)表于 2015-11-03 20:53 |只看該作者
socket 收發(fā)包處理下,更優(yōu)勢的是能跨硬件

如果不是真有瓶頸,別提共享內(nèi)存有多快,木桶理論

論壇徽章:
1
程序設計版塊每日發(fā)帖之星
日期:2015-09-23 06:20:00
6 [報告]
發(fā)表于 2015-11-03 21:49 |只看該作者
本帖最后由 irp 于 2015-11-04 15:20 編輯

shared mem不管是page file backed or normal file backed, 要讀寫總是要耗RAM. 理論上reserve的地址空間可以大于RAM size, 假設你有4g RAM, 在64位os上mmap一個10g的文件應該不是問題。但是訪問過程會引起不斷的page fault, os會不斷地swap來滿足你的訪問請求。通過MAP_POPULATE 可以reserve一個很大的連續(xù)的地址范圍, 然后根據(jù)具體使用的尺寸分段提交。好處是提交的RAM是受workload大小影響的,workload小不會提交過多RAM,同時能保證虛擬地址是連續(xù)的。

論壇徽章:
15
2015七夕節(jié)徽章
日期:2015-08-21 11:06:172017金雞報曉
日期:2017-01-10 15:19:56極客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16賽季CBA聯(lián)賽之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT運維版塊每日發(fā)帖之星
日期:2016-01-28 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-01-25 14:01:34IT運維版塊每周發(fā)帖之星
日期:2016-01-07 23:04:26數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-01-03 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-11-10 06:20:00
7 [報告]
發(fā)表于 2015-11-03 22:17 |只看該作者
回復 1# colin8080
照你這么說,申請多個不就得了,一個1K的池子,一個2K的池子,一個4K的池子,一個8K的池子,總之根據(jù)你的業(yè)務分配多種池子

   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP