Q
分析磁盤訪問
5
A
回答
2
您可以使用Windows Performance Toolkit。您可以爲磁盤I/O事件啓用跟蹤提供程序,並查看每個事件的I/O時間和磁盤服務時間。它確實有一些學習曲線。這也可以讓您確定哪個文件I/O實際上會導致實際訪問磁盤,而不是由緩存管理器處理。
最重要的參數是磁盤服務時間和隊列長度。磁盤服務時間是磁盤實際用於處理請求的時間。隊列長度指示是否將磁盤請求備份在其他請求後面。
對於許多線程w /讀取&寫道 - 許多磁盤在背景寫入的讀取方面性能差。如果你有不同的線程在磁盤上隨機的位置進行大量的磁盤I/O操作,那麼可能會導致某些請求捱餓。
1
爲了幫助你(2):
- 嘗試批次您寫入磁盤,以避免很多小的調用來寫。當你完成清理你的緩衝區時,調用commit。提交(又名fsync)是一項昂貴的操作,所以在有很多小寫操作時變得更加如此。
- 在windows文件句柄上,您可以嘗試 FILE FLAG WRITE THROUGH以提高寫入速度。假設提交不需要使用該標誌調用句柄。
- 如果您正在寫入磁盤的數據也將通過讀取進行訪問,請考慮先寫入內存結構,讓另一個線程從結構中讀取並寫入磁盤。這將有助於避免調用從您剛剛寫入的磁盤讀取數據。
希望這有助於....
0
我會做什麼,如果你不能在同一時間暫停所有線程,並檢查它們的狀態,重點關注其中的一個暫停,雖然這是「該死的緩慢」。 This is a little known but effective technique.
由於它的速度相比它的速度非常慢,無論它等待的時間大概是99%,所以當你暫停時你會看到它。無論是一個大的等待還是幾十億的小孩,這都是真的。看看整個調用堆棧。罪魁禍首可能處於堆棧中間的某處。如果你不確定,請暫停兩三次。罪魁禍首將在所有堆棧樣本上。
相關問題
- 1. 分析SVN磁盤空間
- 2. LBA級磁盤訪問
- 3. Mac分析自由扇區磁盤
- 4. 磁盤分析器的Python工具包
- 5. 磁盤分區
- 6. Java NIO和Windows磁盤訪問
- 7. Azure WCF訪問磁盤文件
- 8. Windows上的原始磁盤訪問8
- 9. 處理/訪問磁盤上的文件
- 10. 從BufferedStream獲取磁盤訪問次數
- 11. ehcache磁盤存儲位置和訪問
- 12. Azure託管磁盤。訪問底層blob?
- 13. 如何訪問網絡中的磁盤
- 14. 鎖定互斥鎖vs訪問磁盤
- 15. 數據大小和磁盤訪問
- 16. 使用C/C++訪問RAW磁盤
- 17. 頻繁訪問磁盤的需求?
- 18. 內存FILE *(無磁盤訪問)
- 19. 從iPhone SDK訪問iPhone磁盤
- 20. 以隨機訪問模式訪問原始磁盤C++
- 21. 磁盤如何分解?
- 22. 磁盤大小問題
- 23. 問題訪問LRU磁盤緩存翻過activites
- 24. 如何解析原始「磁盤」數據?
- 25. 分析VMDK(vmware虛擬機磁盤)文件的更改
- 26. 現有應用程序的磁盤IO分析器
- 27. 分析在原始磁盤上接管的vmcore
- 28. Linux上C++應用程序的磁盤IO分析器
- 29. 包括在WebDev安裝磁盤MSSQL服務器分析
- 30. 如何在PHP腳本中分析磁盤I/O?