Linux 和記憶體緩衝區/記憶體和磁碟儲存
我想問關於記憶體緩衝區/記憶體的問題
假設我們有帶磁碟的 Linux 機器,以及一些將數據寫入磁碟 /var/data 的應用程序
據我了解,當應用程序將數據寫入磁碟時,這些數據也將保存在記憶體記憶體中
一段時間後,X時間後應用程序數據將從記憶體記憶體中刪除
是否可以強制將特定數據保存在記憶體記憶體而不是磁碟上?
我的問題的原因是因為我們想要快速讀/寫,而磁碟對此非常慢
保存在記憶體記憶體中
真的沒有這樣的事情。你從這個buff/cache開始:
]# free -g total used free shared buff/cache available Mem: 7 0 3 0 3 6 Swap: 0 0 0
這給出了目前用作緩衝區或記憶體的 RAM 量。核心這樣做正是因為磁碟很慢,而且通常(如圖所示)有足夠的 RAM。
如果您想為某些文件保留一部分 RAM,可以將它們放到 RAM 磁碟 (
mount -t tmpfs ...
) 上。但是你必須記住將它們複製回磁碟。
我認為您可能對記憶體層次結構的工作方式有誤解。層次結構從最接近 CPU/最快到最慢:
CPU 寄存器 > 高速記憶體 > RAM/主記憶體 > 磁碟
高速記憶體位於 CPU 和主記憶體之間,訪問速度比主記憶體快。通常,當訪問記憶體位置時,附近的數據塊(即地址範圍塊的副本)會被複製到記憶體中。然後,下次訪問記憶體位置時,首先檢查記憶體,以查看數據是否已經存在,並且不必訪問主記憶體可以節省時間。
所以,我覺得你的問題不太合理。主記憶體和磁碟之間通常沒有中間儲存或記憶體。目前使用的數據儲存在 RAM 中,這是儲存和訪問它的最有效方式。如果您想保存以備後用,請在機器關閉後將其複製到磁碟(因為這是您唯一的選擇)。如果您想立即快速訪問數據,則不想觸摸磁碟,除非您必須這樣做。
我不知道有任何方法可以輕鬆覆蓋記憶體記憶體管理並將某些內容儲存到記憶體中,但明確地不儲存到 RAM 中。通常已經有非常好的和高效的系統來管理記憶體記憶體。
另外,我不相信數據會在 X 時間後從記憶體中刪除。通常,它會被 CPU 想要訪問的更新的數據推出。