磁盤io隊列溢出
回答
隊列不擴展到RAM。有一個髒頁面的磁盤緩存。操作系統真的想將它們寫入磁盤。有些程序甚至可能在等待髒頁面被寫入時阻塞。隨着程序被阻止,他們停止向磁盤寫入更多數據。實際上,這是非常自我限制的。
此隊列是否在邏輯上擴展到DRAM?
你認爲那個隊列在哪裏?它在RAM中。
任何操作系統的IO緩衝基礎結構只能用於避免阻止任何程序嘗試執行IO操作。
E.g.想象你有一個將數據寫入文件的程序。出於這個原因,它調用了一個write
系統調用。在操作系統中,轉到文件系統驅動程序,該驅動程序決定哪個磁盤扇區發生變化。
現在,該更改命令轉到IO子系統,該子系統將命令放入隊列中。如果該隊列已滿,則文件系統調用將阻止,即。直到隊列中有空間時纔會完成呼叫,這意味着write
呼叫塊。
非常簡單:只要您的寫作設備無法跟上,您的寫作程序就會在write
呼叫中停止。這很合乎邏輯。這就像試圖將郵件推送到完整的郵箱。直到有人在另一端取出郵件,你不能推送新郵件,所以郵遞員將不得不等待。
答案中的第一行似乎不正確。磁盤設備將重新安排讀/寫請求以優化磁頭移動。如果整個隊列處於內存中,那麼磁盤如何檢查您聲稱駐留在內存中的隊列? –
@MikeG我認爲你有一個特定類型的設備,實際上有重新安排在設備自己的內存訪問的能力,這是可能的嗎?我假設我們正在閱讀有關軟件隊列的內容,因爲您從未提及過哪個設備。 –
- 1. Java溢出到磁盤的FIFO隊列
- 2. RabbitMQ溢出隊列到磁盤
- 3. 如何利用磁盤IO排隊
- 4. Cassandra磁盤io
- 5. EJB 1.1和磁盤IO
- 6. SQLite的磁盤IO錯誤
- 7. 高磁盤IO速率
- 8. 磁盤寫入隊列長度
- 9. Mac OSX上的磁盤隊列長度
- 10. 如何在Linux上顯示當前的磁盤IO隊列長度?
- 11. 隊列溢出條件
- 12. C++處理隊列溢出
- 13. MongoDB GridFS VS直接磁盤IO
- 14. 磁盤IO與PHP中的MySQL查詢
- 15. 磁盤IO在百分之OS
- 16. 獲取磁盤IO性能計數器
- 17. 具有持久性消息的低佔位率隊列/消息傳遞解決方案/溢出至磁盤
- 18. 列出磁盤上的所有分區
- 19. 線程#溢出排序數據_GB到磁盤
- 20. 熊貓PySpark給OOM錯誤,而不是溢出到磁盤
- 21. 火花清理洗牌溢出到磁盤
- 22. EhCache在特定路徑溢出到磁盤
- 23. 是否sqoop臨時數據溢出到磁盤
- 24. 堆棧溢出使用消息隊列
- 25. Python進程間隊列溢出
- 26. 保存與列表列的磁盤到磁盤
- 27. RabbitMQ的隊列磁盤空間使用情況
- 28. 數據庫磁盤隊列太高,可以做什麼?
- 29. 在磁盤上的特定位置創建一個隊列C++
- 30. ActiveMQ沒有釋放隊列的磁盤存儲
如果操作系統由於其隊列已滿而無法寫入磁盤設備,它將等待並稍後再試。如果設備不排空隊列,操作系統將最終報告某種設備故障。 – Barmar