2011-09-13 79 views
0

ftruncate可用於增加共享內存塊的大小,超出sysconfig給出的共享內存限制大小嗎?物理內存用完時如何使用交換?超出sysconfig的共享內存大小限制

+0

默認情況下,/ dev/shm大小是總物理內存的50%。我如何讓Linux上的C應用程序使用交換空間,以防50%的限制全部用完。默認行爲是它給出了一個錯誤「磁盤上沒有剩餘空間」。 – user900563

回答

2

可以ftruncate用於增加共享存儲器塊的大小...

ftruncate()調整大小的文件。它不調整該文件的內存映射。所以,答案是否定的。

...超出sysconfig給出的共享內存限制大小?

該限制不能被破壞。 root用戶可以更改該限制。

如果物理內存用完,我該如何使用交換?

假設是存儲器映射的文件中,一個方法是將文件的唯一地圖部分的時間,而不是整個文件。如果進程使用的虛擬內存比可用物理內存多,操作系統將自動使用交換爲您釋放一些物理內存。

+0

感謝您的回答。問題是由進程1轉儲的文件需要由進程2再次加載。因此,即使我將該文件的一部分進行mmap映射,我最終還是需要轉儲整個文件以供以下進程使用。我需要使用交換。 – user900563

+0

對不起,不能完全理解你的問題。 –

+0

我需要一個20 GB的文件保留在共享內存塊中,而我的物理內存爲20GB,但是/ dev/shm /爲10GB。我沒有root權限。 – user900563