[英]How to measure characteristics of file (hard-disk) I/O?
如何測量文件(硬盤)I / O的特征? 例如,在具有硬盤(速度X)和cpu i7(或任意數量的內核)以及Y數量的內存(具有Z Hz BIOS)的計算機上(在Windows操作系統上)將是:
我想寫大文件(通過網絡或其他來源流式傳輸),並盡可能快(並發)! 我正在用C#編寫代碼。 它就像一個下載管理器; 因此,如果流式傳輸被中斷,它可以稍后進行。
答案(通常如此)取決於您的用法。 整個操作系統是不同使用場景之間的一大折衷。 對於NTFS文件系統,可以提到將塊大小設置為4k,NTFS存儲的文件小於MTF中的塊大小,文件大小,文件數量,碎片等。
如果您打算寫入大文件,則塊大小為64k可能會很好。 也就是說,如果您計划讀取大量數據。 如果您讀取的數據量較小,則較小的大小是好的。 該操作系統工作在4k頁面中,因此4k是很好的。 壓縮(和加密?)以及SQL和Exchange僅在4k頁面(iirc)上工作。
如果您寫入小的文件(<4k),它們將存儲在MFT中,因此您不必進行“ ekstra跳轉”。 這在寫操作(讀可能已緩存MFT)中特別有用。 MFT按順序存儲文件(例如,塊1000-1010、2000-2010),因此碎片將使MFT更大。 並行將文件寫入磁盤是碎片的主要原因之一,另一個是刪除文件。 您可以預先為文件分配所需的大小,Windows會嘗試在磁盤上找到合適的位置以應對碎片。 還有諸如O&O Defrag的實時碎片整理程序。
Windows將二進制流幾乎直接映射到磁盤上的物理位置,因此,使用不同的讀/寫方法將不會像其他因素那樣產生那么多的性能提升。 為了獲得最高速度,請使用技術用於將內存直接映射到磁盤。 請參閱http://en.wikipedia.org/wiki/Memory-mapped_file
Windows中(在“設備管理器”下,“硬盤”下)有一個選項可以增加磁盤上的緩存。 這很危險,因為如果計算機出現藍屏或電源中斷,ut可能會損壞文件系統,但是在寫入較小的文件(以及所有寫入)時會大大提高性能。 如果磁盤繁忙,這將特別有價值,因為查找時間將減少。 Windows使用所謂的電梯算法,這基本上意味着它可以在表面上來回移動硬盤磁頭,從而在移動方向上為任何應用程序服務。
希望這可以幫助。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.