新聞中心
在Linux系統(tǒng)中,mlock是一個(gè)非常重要的命令。它是用來(lái)鎖定內(nèi)存區(qū)域的,這樣可以避免這些內(nèi)存區(qū)域被系統(tǒng)交換到磁盤(pán)上,從而提高系統(tǒng)的性能。本文將介紹Linux系統(tǒng)中mlock的使用方法。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出突泉免費(fèi)做網(wǎng)站回饋大家。
1. mlock的基本用途
mlock命令可以鎖定一個(gè)進(jìn)程的一段內(nèi)存區(qū)域,從而防止這段內(nèi)存被系統(tǒng)清除到交換空間中。這個(gè)命令通常在需要使用大量?jī)?nèi)存的時(shí)候使用,因?yàn)槿绻麅?nèi)存區(qū)域被清除到交換空間中,就會(huì)極大地影響系統(tǒng)的性能。
2. mlock的使用限制
在使用mlock之前,需要注意其使用限制。一般來(lái)說(shuō),只有當(dāng)進(jìn)程的權(quán)限是root時(shí),才能使用mlock命令。這是因?yàn)閙lock命令需要對(duì)內(nèi)存區(qū)域進(jìn)行鎖定操作,而這種操作只有具備足夠權(quán)限的用戶才能進(jìn)行。
此外,為了避免濫用mlock命令對(duì)系統(tǒng)造成的影響,Linux內(nèi)核通常會(huì)對(duì)mlock命令的使用做出限制。在默認(rèn)情況下,一個(gè)進(jìn)程只能使用少量?jī)?nèi)存進(jìn)行mlock操作。如果需要大量使用mlock,需要通過(guò)修改系統(tǒng)參數(shù)來(lái)實(shí)現(xiàn)。
3. 使用mlock命令鎖定內(nèi)存區(qū)域
在Linux系統(tǒng)中,使用mlock命令鎖定一段內(nèi)存區(qū)域非常簡(jiǎn)單。下面是一個(gè)簡(jiǎn)單的例子:
“`
#include
#include
#include
#include
int mn() {
void *p;
size_t size = 1024*1024;
p = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
if (p == MAP_FLED) {
perror(“mmap fled”);
exit(-1);
}
mlock(p, size);
printf(“mlock success\n”);
sleep(60);
return 0;
}
“`
在上面的例子中,我們首先調(diào)用mmap函數(shù)來(lái)分配一段大小為1MB的內(nèi)存區(qū)域。然后使用mlock命令將這些內(nèi)存區(qū)域鎖定住。我們使用sleep函數(shù)讓程序休眠60秒,這樣我們可以在這段時(shí)間內(nèi)觀察到這些內(nèi)存區(qū)域是否被系統(tǒng)清理到了交換空間中。
4. 使用mlock命令的注意事項(xiàng)
在使用mlock命令時(shí),我們需要注意以下幾點(diǎn):
(1)盡量不要過(guò)度使用mlock命令。如果一味的將所有內(nèi)存都鎖定住,反而會(huì)降低系統(tǒng)的性能。
(2)mlock命令只鎖定內(nèi)存區(qū)域,因此如果這些內(nèi)存區(qū)域被釋放,鎖定也會(huì)被清除。因此使用mlock命令時(shí)需要仔細(xì)考慮內(nèi)存的分配和釋放。
(3)在使用mlock命令后,內(nèi)存區(qū)域只有在程序退出時(shí)才會(huì)被系統(tǒng)清理。因此如果需要釋放這些內(nèi)存,需要手動(dòng)調(diào)用munlock命令。
5.
相關(guān)問(wèn)題拓展閱讀:
- 誰(shuí)在用android的buffer和cached
誰(shuí)在用android的buffer和cached
buffer和cached 你是說(shuō)緩吵歷存嗎,?
具體指哪方面則碰乎,麻煩你把問(wèn)題描述清楚一點(diǎn),android方面的問(wèn)題,我們可孫悉以幫你解決
通常,對(duì)應(yīng)Linux的系統(tǒng)來(lái)說(shuō),可以通過(guò)cat /proc/meminfo查看內(nèi)存的使用情況,Android是基于Linux的,所有也可以使用adb shell cat /proc/meminfo
查看內(nèi)存的使用情況,如下所示:
MemTotal:4 kB
MemFree:32 kB
Buffers:28 kB
Cached:332 kB
SwapCached:kB
Active:500 kB
Inactive:8 kB
Active(anon):kB
Inactive(anon):kB
Active(file):kB
Inactive(file):kB
Unevictable:kB
Mlocked: 0 kB
HighTotal: kB
HighFree:8 kB
LowTotal:2 kB
LowFree:04 kB
SwapTotal: kB
SwapFree:0 kB
Dirty: 0 kB
Writeback: kB
AnonPages: kB
Mapped:004 kB
Shmem: 452 kB
Slab:45988 kB
SReclaimable:kB
SUnreclaim:kB
KernelStack:kB
PageTables:kB
NFS_Unstable:kB
Bounce: 0 kB
WritebackTmp:kB
CommitLimit:kB
Committed_AS:kB
VmallocTotal:kB
VmallocUsed:kB
VmallocChunk:kB
其中:
MemTotal:總的可用內(nèi)存
MemFree: 未被分配空閑的內(nèi)存
Buffers:buffer的大小
Cached:cache的大小
SwapCached:swap 緩存的大小,Android很少使用swap的,經(jīng)常為0
其中free memory = MemFree + Buffer + Cached,那么used memory = MemTotal – free memory = MemTotal – MemFree - Buffer – Cached,為649M
按理說(shuō)應(yīng)該是這樣的,但事實(shí)卻未必如此,使用procrank命令,看以看到總的信液激息如下:
PSS RSS
TOTALKK
RAM:K total,K free, 30692K buffers,K cached, 452K shmem, 45976K slab
可用看到PSS的內(nèi)存大小為469M,還有80M不知道跑哪去了。哦,完了還有PageTables占用的內(nèi)存沒(méi)有減去,而此時(shí)系統(tǒng)PageTables才8M,= 640M,
離469M的PSS還有71M,應(yīng)該還有地方?jīng)]有去除的。是的,shmem和slab沒(méi)有去除,這兩個(gè)加起來(lái)有46M,= 25M,那這25M去孫廳哪了呢?應(yīng)該是Android
Reserved 或者是3D/HW buffer使用了吧!不太清楚。
其實(shí),應(yīng)則埋隱該通過(guò)zoneinfo里面去查看內(nèi)存的使用情況(單位:4kb,一個(gè)page的大?。?,可能更準(zhǔn)確:
Node 0, zone Normal
pages free
min
low
high
scanned 0
spanned
present
nr_free_pages
nr_inactive_anon 0
nr_active_anon 0
nr_inactive_file 4187
nr_active_file 3590
nr_unevictable 0
nr_mlock 0
nr_anon_pages 0
nr_mapped 39
nr_file_pages 7771
nr_dirty 0
nr_writeback 0
nr_slab_reclaimable 5636
nr_slab_unreclaimable 5840
nr_page_table_pages 2479
nr_kernel_stack 867
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_vmscan_immediate_reclaim 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 0
nr_dirtied
nr_written
nr_anon_transparent_hugepages 0
nr_free_cma 2329
protection: (0, 8902, 8902)
pagesets
cpu: 0
count: 52
high: 186
batch: 31
vm stats threshold: 8
all_unreclaimable: 0
start_pfn:
inactive_ratio: 1
Node 0, zone HighMem
pages free
min
low
high
scanned 0
spanned
present
nr_free_pages 58767
nr_inactive_anon 101
nr_active_anon 90565
nr_inactive_file 57093
nr_active_file 41004
nr_unevictable 0
nr_mlock 0
nr_anon_pages 90557
nr_mapped
nr_file_pages 98210
nr_dirty 0
mlock linux的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mlock linux,Linux系統(tǒng)中的mlock使用方法簡(jiǎn)介,誰(shuí)在用android的buffer和cached的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話:13518219792
當(dāng)前標(biāo)題:Linux系統(tǒng)中的mlock使用方法簡(jiǎn)介(mlocklinux)
瀏覽路徑:http://m.fisionsoft.com.cn/article/djpephh.html


咨詢
建站咨詢
