ดิสก์แบบอะซิงโครนัส I/O ปรากฏเหมือนกันใน Windows NT, Windows 2000 และ Windows XP

หมายเลขบทความ (Article ID): 156932 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

แฟ้ม I/O บน Microsoft Windows NT, Windows 2000 และ Windows XP สามารถเป็นแบบซิงโครนัส หรือแบบอะซิงโครนัส ลักษณะการทำงานเริ่มต้นสำหรับ I/O คือแบบซิงโครนัส: ฟังก์ชันการ I/O ถูกเรียก และส่งกลับเมื่อ I/O เสร็จสมบูรณ์ I/O แบบอะซิงโครนัส อนุญาตให้มีฟังก์ชัน I/O เพื่อกลับสู่การดำเนินการกลับไปยังผู้เรียกในทันทีที่อีกครอง แต่ไม่มีสันนิษฐาน I/O ที่จะเสร็จสมบูรณ์จนถึงเวลาในอนาคต ระบบปฏิบัติการแจ้งให้ผู้เรียกเมื่อ I/O เสร็จสมบูรณ์แล้ว อีกวิธีหนึ่งคือ ผู้เรียกที่สามารถกำหนดสถานะของการดำเนินการ I/O ที่ค้างชำระ โดยใช้บริการของระบบปฏิบัติการ

ประโยชน์ของการแบบอะซิงโครนัส I/O คือ ผู้เรียกมีเวลาในการทำงานอื่น หรือออกคำขอเพิ่มเติมในขณะที่การดำเนินการ I/O ถูกเสร็จสมบูรณ์แล้ว เงื่อนไข Overlapped I/O มักใช้สำหรับ I/O แบบอะซิงโครนัสและ I/O overlapped ไม่ใช่สำหรับ I/O แบบซิงโครนัส บทความนี้ใช้เงื่อนไข Asynchronous และ Synchronous สำหรับการดำเนินการ I/O ภายใต้ Windows NT บทความนี้อนุมานเครื่องอ่านได้เฉพาะ familiarity ด้วยฟังก์ชัน I/O แฟ้มเช่น WriteFile CreateFile, ReadFile

บ่อยครั้ง การดำเนินการ I/O แบบอะซิงโครนัสดำเนินกันเป็นเพียง I/O บางเงื่อนไขที่บทความนี้กล่าวถึงในการสร้างส่วนหลังจากที่ทำการดำเนินการ I/O synchronously ผู้เรียกได้มีเวลาสำหรับการทำงานเบื้องหลังได้เนื่องจากไม่มีกลับฟังก์ชัน I/O จนกว่า I/O เสร็จสมบูรณ์แล้ว

ฟังก์ชันต่าง ๆ จะเกี่ยวข้องกับการ I/O แบบซิงโครนัส และแบบอะซิงโครนัส บทความนี้ใช้ ReadFile และ WriteFile เป็นตัวอย่าง เป็นทางเลือกที่ดี ReadFileEx และ WriteFileEx แม้ว่าบทความนี้อธิบายการเฉพาะดิสก์ I/O โดยเฉพาะอย่างยิ่ง หลักการจำนวนมากสามารถถูกประยุกต์ใช้กับชนิดอื่น ๆ ของ I/O เช่น I/O หรือเครือข่าย I/O พอร์ตอนุกรม

หมายเหตุ:: เพราะ Windows 95 ไม่สนับสนุน I/O แบบอะซิงโครนัสในอุปกรณ์ดิสก์ (แม้ว่าได้บ้างบนชนิดของอุปกรณ์ I/O อื่น) ลักษณะการทำงานไม่ครอบคลุมในบทความนี้

ข้อมูลเพิ่มเติม

ตั้งค่าการ I/O แบบอะซิงโครนัส

ค่าสถานะ FILE_FLAG_OVERLAPPED ต้องถูกระบุใน CreateFile เมื่อมีเปิดแฟ้ม ค่าสถานะนี้ช่วยให้การดำเนินการ I/O ที่แฟ้มที่ปฏิบัติ asynchronously ที่นี่คือตัวอย่าง:
   HANDLE hFile;

   hFile = CreateFile(szFileName,
                      GENERIC_READ,
                      0,
                      NULL,
                      OPEN_EXISTING,
                      FILE_FLAG_NORMAL | FILE_FLAG_OVERLAPPED,
                      NULL);

   if (hFile == INVALID_HANDLE_VALUE)
      ErrorOpeningFile();
				
ระวังเมื่อเขียนโค้ดสำหรับ I/O แบบอะซิงโครนัสเนื่องจากระบบจองด้านขวาเพื่อทำการดำเนินการแบบซิงโครนัสหากต้องการ ดังนั้น ได้ดีที่สุดถ้าคุณเขียนโปรแกรมการจัดการการดำเนินการ I/O ที่อาจจะเสร็จสมบูรณ์ synchronously หรือ asynchronously อย่างถูกต้อง ตัวอย่างรหัสแสดงพิจารณานี้

ไม่มีสิ่งต่าง ๆ ที่โปรแกรมสามารถขณะรอการดำเนินการแบบอะซิงโครนัสให้เสร็จสมบูรณ์ เช่นการดำเนินงานเพิ่มเติม queuing หรือการทำงานเบื้องหลัง ตัวอย่างเช่น รหัสต่อไปนี้จัดการคาบเกี่ยวกันได้ และไม่ใช่ overlapped ความสมบูรณ์ของการดำเนินการอ่านได้อย่างถูกต้อง จะไม่ทำสิ่งใด ๆ มากกว่ารอ I/O คงค้างเพื่อที่ทำให้เสร็จสมบูรณ์:
   if (!ReadFile(hFile,
                 pDataBuf,
                 dwSizeOfBuffer,
                 &NumberOfBytesRead,
                 &osReadOperation )
   {
      if (GetLastError() != ERROR_IO_PENDING)
      {
         // Some other error occurred while reading the file.
         ErrorReadingFile();
         ExitProcess(0);
      }
      else
         // Operation has been queued and
         // will complete in the future.
         fOverlapped = TRUE;
   }
   else
      // Operation has completed immediately.
      fOverlapped = FALSE;

   if (fOverlapped)
   {
      // Wait for the operation to complete before continuing.
      // You could do some background work if you wanted to.
      if (GetOverlappedResult( hFile,
                               &osReadOperation,
                               &NumberOfBytesTransferred,
                               TRUE))
         ReadHasCompleted(NumberOfBytesTransferred);
      else
         // Operation has completed, but it failed.
         ErrorReadingFile();
   }
   else
      ReadHasCompleted(NumberOfBytesRead);
				
หมายเหตุที่ NumberOfBytesRead ที่ส่งผ่านไป ReadFile จะแตกต่างจาก & NumberOfBytesTransferred ส่งผ่านไป GetOverlappedResult ถ้าการดำเนินงานที่ถูกทำแบบอะซิงโครนัส แล้ว GetOverlappedResult ถูกใช้เพื่อกำหนดหมายเลขที่แท้จริงของไบต์ที่ถูกโอนย้ายในการดำเนินการหลังจากที่เสร็จสมบูรณ์ การ & NumberOfBytesRead ที่ส่งผ่านไป ReadFile คือ meaningless

ถ้า การดำเนินเสร็จสมบูรณ์ในทันที แล้ว & NumberOfBytesRead ส่งผ่านไปยังอีกครอง ReadFile มีผลบังคับใช้สำหรับจำนวนไบต์ที่มีอ่าน ในกรณีนี้ ละเว้นโครงสร้าง OVERLAPPED ที่ส่งผ่านไป ReadFile ไม่ได้ใช้ดังกล่าวกับ GetOverlappedResult หรือ WaitForSingleObject

caveat อื่น ด้วยการดำเนินการแบบอะซิงโครนัสไม่ว่า คุณต้องไม่ใช้โครงสร้างการ OVERLAPPED จนกว่าของการดำเนินการที่รอค้างอยู่เสร็จเรียบร้อยแล้ว ในอย่างอื่น ถ้าคุณมีการดำเนินการ I/O คงค้าง 3 คุณต้องใช้โครงสร้าง OVERLAPPED ที่สาม ถ้าคุณนำมาใช้เป็นโครงสร้าง OVERLAPPED คุณจะได้รับผลลัพธ์ unpredictable ในการดำเนินการ I/O และคุณอาจพบความเสียหายของข้อมูล นอกจากนี้ ก่อนที่คุณสามารถใช้โครงสร้าง OVERLAPPED เป็นครั้งแรก หรือ ก่อนที่คุณนำมาใช้ได้หลังจากการดำเนินงานก่อนหน้านี้เสร็จเรียบร้อยแล้ว คุณต้องเตใช้ได้อย่างถูกต้องงานดังกล่าวเพื่อให้มีข้อมูลน้อยเกินไปด้านซ้ายมีผลต่อการดำเนินการใหม่

การจำกัดชนิดเดียวกันที่ใช้กับบัฟเฟอร์ข้อมูลที่ใช้ในการดำเนินการ บัฟเฟอร์ข้อมูลที่ต้องไม่สามารถอ่าน หรือเขียนจนกว่าการดำเนินงานที่สอดคล้องกันของ I/O เสร็จเรียบร้อยแล้ว กำลังอ่าน หรือเขียนบัฟเฟอร์ที่อาจทำให้ข้อผิดพลาดและข้อมูลที่เสียหาย

ปรากฏแบบอะซิงโครนัส I/O อยู่เป็น Synchronous

ถ้าคุณปฏิบัติตามคำแนะนำก่อนหน้าในบทความนี้ อย่างไรก็ตาม ผลิต I/O ของคุณทั้งหมดโดยทั่วไปจะยังคงทำ synchronously ในใบสั่งออก และไม่มีการดำเนินการ ReadFile กลับ FALSE ด้วย GetLastError() ต้องกลับ ERROR_IO_PENDING ซึ่งหมายความว่า คุณมีเวลาที่ไม่ทำงานเบื้องหลังใด ๆ เหตุใดนี้เกิดขึ้นได้อย่างไร

มีหลายสาเหตุว่าเหตุใดการดำเนินการ I/O ทำ synchronously แม้ว่าคุณมี coded สำหรับการดำเนินการแบบอะซิงโครนัส:

บีบอัด

obstruction เดียวกับการดำเนินการแบบอะซิงโครนัสถูกบีบอัดของระบบไฟล์ NTFS โปรแกรมควบคุมระบบแฟ้มจะไม่เข้าแฟ้มที่บีบอัด asynchronously แต่ การดำเนินการทั้งหมดจะเพียงทำแบบซิงโครนัส นี่ไม่ประยุกต์ใช้กับแฟ้มที่บีบอัด ด้วยโปรแกรมอรรถประโยชน์ที่คล้ายกับการบีบอัดหรือ PKZIP

การเข้ารหัสระบบไฟล์ ntfs

เหมือนกับรายการบัญชี การเข้ารหัสลับแฟ้มสาเหตุโปรแกรมควบคุมระบบการแปลง I/O แบบอะซิงโครนัสแบบซิงโครนัส ถ้าแฟ้มมีการถอดรหัสลับ คำร้องขอ I/O จะแบบอะซิงโครนัส

ขยายแฟ้ม

เหตุผลที่ว่า การดำเนินการ I/O ถูกสมบูรณ์ synchronously อื่นกำลังดำเนินการเอง ใน Windows NT ใด ๆ เขียนการดำเนินการกับแฟ้มที่ขยายความยาวของจะเป็นแบบซิงโครนัส

หมายเหตุ:: โปรแกรมประยุกต์สามารถทำการดำเนินการเขียนที่ระบุไว้ก่อนหน้านี้แบบอสมวาร โดยการเปลี่ยนความยาวข้อมูลที่ถูกต้องของแฟ้ม โดยใช้ฟังก์ชัน SetFileValidData การออกแบบ WriteFile แล้ว

ใช้ SetFileValidData (ซึ่งจะพร้อมใช้งานบน Windows XP และรุ่นที่ใหม่กว่า), โปรแกรมประยุกต์สามารถอย่างมีประสิทธิภาพขยายแฟ้มโดยไม่ต้อง incurring เป็นนักประสิทธิภาพสำหรับศูนย์ไส้เหล่านั้น

เนื่องจากระบบแฟ้ม NTFS ไม่เป็นศูนย์-การเติมข้อมูลจนถึงความยาวข้อมูลที่ถูกต้อง (VDL) ที่กำหนด โดย SetFileValidData ฟังก์ชันนี้ได้เกี่ยวข้องด้านการรักษาความปลอดภัยที่แฟ้มอาจถูกกำหนดให้ clusters ก่อนหน้านี้ได้ถูกว่าง โดยแฟ้มอื่น ๆ ดังนั้น SetFileValidData ต้องให้ผู้เรียกมี SeManageVolumePrivilege ใหม่ที่เปิดใช้งาน (โดยค่าเริ่มต้น นี้ถูกกำหนดให้กับผู้ดูแลเท่านั้น) Microsoft แนะนำว่า isv พิจารณาเกี่ยวข้องด้านการใช้ฟังก์ชันนี้อย่างระมัดระวัง

แคช

โปรแกรมส่วนใหญ่ I/O ควบคุม (ดิสก์ การสื่อสาร และอื่น ๆ) มีพิเศษ case รหัส ซึ่งถ้าการร้องขอ I/O สามารถจะสมบูรณ์ "ทันที" การดำเนินการที่จะสามารถให้เสร็จสมบูรณ์ และฟังก์ชัน ReadFile หรือ WriteFile จะส่งกลับ TRUE วิธีการทั้งหมด ชนิดของการดำเนินการเหล่านี้ปรากฏเป็นแบบซิงโครนัส สำหรับอุปกรณ์ดิสก์ โดยทั่วไป การร้องขอ I/O สามารถสามารถให้เสร็จสมบูรณ์ "ทันที" เมื่อข้อมูลถูกแคในหน่วยความจำ

ข้อมูลไม่ได้อยู่ในแคช

โครงร่างของแคชสามารถทำกับคุณ อย่างไรก็ตาม ถ้าข้อมูลไม่ได้อยู่ในแคช ใช้การแมปแฟ้มภายในแคช Windows NT ถูกนำมาใช้ ตัวจัดการหน่วยความจำใน Windows NT ไม่มีกลไกการข้อบกพร่องที่หน้าแบบอะซิงโครนัสเพื่อจัดการการแมปแฟ้มที่ใช้ โดยตัวจัดการการแคช ตัวจัดการการแคชสามารถ ยืนยันว่า หน้าการร้องขออยู่ในหน่วยความจำ อย่างไรก็ตาม ดังนั้นถ้าคุณออกแบบอ่านการแคชข้อแบบอะซิงโครนัส และเพจที่ไม่ได้อยู่ในหน่วยความจำ โปรแกรมควบคุมระบบแฟ้มอนุมานว่า คุณไม่ต้องการของเธรดที่ถูกบล็อก และคำขอจะถูกจัดการ โดยประเภทการผลิตมีจำกัดของเธรดตอนตัวทำงาน ตัวควบคุมถูกส่งกลับไปยังโปรแกรมของคุณหลังจากการเรียก ReadFile ของคุณด้วยการอ่านยังคงค้างอยู่

ทำงานนี้อยู่กับการร้องขอ จำนวนเล็กแต่เนื่อง จากเก็บของเธรดของผู้ปฏิบัติงานที่ถูกจำกัด (อยู่สามบนระบบ 16 MB), มีจัดคิวจะยังคงสามารถเพียงสองสามคำร้องขอไว้กับโปรแกรมควบคุมของดิสก์ในเวลาที่เฉพาะ ถ้าคุณออกจำนวนมากดำเนินการ I/O สำหรับข้อมูลที่ไม่ได้อยู่ในแคช ผู้จัดการของแคชและการจัดการหน่วยความจำกลายเป็น saturated และร้องขอของคุณกำลังทำแบบซิงโครนัส

ลักษณะการทำงานของตัวจัดการการแคชสามารถยังสามารถ influenced ขึ้นอยู่กับว่าคุณเข้าถึงแฟ้มแบบสุ่ม หรือตามลำดับ ประโยชน์ของการแคชจะดูได้มากที่สุดเมื่อมีการเข้าถึงแฟ้มตามลำดับ ค่าสถานะ FILE_FLAG_SEQUENTIAL_SCAN ในการเรียก CreateFile จะทำการปรับปรุงแคสำหรับการเข้าถึงชนิดนี้ อย่างไรก็ตาม ถ้าคุณเข้าถึงแฟ้มในแบบสุ่มที่ต้องการ ใช้ค่าสถานะ FILE_FLAG_RANDOM_ACCESS CreateFile เพื่อแนะนำผู้จัดการแคเพื่อปรับการตั้งค่าของลักษณะการทำงานสำหรับการเข้าถึงแบบสุ่ม

ไม่ใช้การแคช

ค่าสถานะ FILE_FLAG_NO_BUFFERING มีผลต่อลักษณะการทำงานของระบบแฟ้มสำหรับการดำเนินการแบบอะซิงโครนัสมากที่สุด นี่คือวิธีที่ดีที่สุดในการรับประกันได้ว่า การร้องขอ I/O ถูกแบบอะซิงโครนัสจริง โปรแกรมแนะนำให้ระบบแฟ้มไม่ใช้กลไกการแคชใด ๆ เลย

คำเตือน: ไม่มีการจำกัดบางอย่างในการใช้ค่าสถานะนี้ที่จำเป็นต้องดำเนินการกับการจัดตำแหน่งบัฟเฟอร์ข้อมูลและขนาดเซกเตอร์ของอุปกรณ์ ดูการอ้างอิงฟังก์ชันในเอกสารประกอบสำหรับฟังก์ชัน CreateFile สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ค่าสถานะนี้อย่างถูกต้อง

โค้ดตัวอย่าง

แฟ้มต่อไปนี้สามารถดาวน์โหลดได้จากศูนย์ดาวน์โหลดของ Microsoft::
Asynczip.exe
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการดาวน์โหลดแฟ้มสนับสนุนของ Microsoft โปรดคลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
119591วิธีรับแฟ้มการสนับสนุนของไมโครซอฟท์จากบริการออนไลน์
Microsoft สแกนแฟ้มนี้เพื่อหาไวรัส Microsoft ใช้ซอฟต์แวร์ตรวจสอบไวรัสล่าสุด ณ วันที่มีการประกาศแฟ้มนั้นๆ แฟ้มดังกล่าวจะถูกเก็บในเซิร์ฟเวอร์เพิ่มการรักษาความปลอดภัย ซึ่งช่วยป้องกันการเปลี่ยนแปลงแก้ไขแฟ้มโดยไม่ได้รับอนุญาตตัวอย่างรหัสที่เกี่ยวข้องกับบทความนี้อธิบายการใช้ค่าสถานะและฟังก์ชันที่มีการกล่าวถึง รหัสที่รันเป็นแอพลิเคชันของคอนโซลใน Windows NT สวิตช์บรรทัดคำสั่งต่อไปนี้ควบคุมลักษณะการทำงานของ:
   Asynchio
   Usage: asynchio [options]

   Options:
      /fFilePattern  Files to use for I/O.
      /s    Specifies synchronous operation.
      /n    Specifies that no buffering should be used
      /r    Use FILE_FLAG_RANDOM_ACCESS
      /l    Use FILE_FLAG_SEQUENTIAL_SCAN
      /o###    Issue ### operations
      /e    First read entire file, then issue smaller reads
      /?    Display this usage message.
				
ตัวอย่าง: /n /f*.bmp asynchio
ค่าเริ่มต้นการทำงานของโปรแกรมนี้ถูกใช้สำหรับการดำเนินการแบบอะซิงโครนัส buffered โดยค่าเริ่มต้น การดำเนินการ I/O 500 กำลังขอ

ผลลัพธ์การทดสอบเวิลด์จริง

ต่อไปนี้คือ ผลลัพธ์การทดสอบบางอย่างจากโค้ดตัวอย่าง magnitude หมายเลขไม่จำเป็นที่นี่ และจากคอมพิวเตอร์เครื่องที่แตกต่างกันไป แต่ความสัมพันธ์ของหมายเลขที่นำไปเปรียบเทียบกัน illuminates affect ทั่วไปของค่าสถานะประสิทธิภาพการทำงาน

คุณคาดว่าจะดูผลลัพธ์ที่คล้ายกับข้อความต่อไปนี้:
  • ทดสอบ 1
    Asynchronous, unbuffered I/O:  asynchio /f*.dat /n
    
       Operations completed out of the order in which they were requested.
       500 requests queued in 0.224264 seconds.
       500 requests completed in 4.982481 seconds.
    						
    การทดสอบนี้แสดงว่า โปรแกรมที่ระบุไว้ก่อนหน้านี้ออกให้ร้องขอ I/O 500 อย่างรวดเร็ว และมีจำนวนมากเวลาการทำงานอื่น หรือออกคำขอเพิ่มเติม
  • ทดสอบ 2
    Synchronous, unbuffered I/O: asynchio /f*.dat /s /n
    
       Operations completed in the order issued.
       500 requests queued and completed in 4.495806 seconds.
    						
    การทดสอบนี้แสดงว่า โปรแกรมนี้ใช้ในวินาที 4.495880 เรียก ReadFile เพื่อให้การดำเนินการ เสร็จสมบูรณ์ในขณะที่การทดสอบ 1 เท่านั้น 0.224264 วินาทีที่จะออกคำขอเดิมที่ใช้ใน ในการทดสอบ 2 ไม่มีเวลา "พิเศษ" เพื่อให้โปรแกรมทำงานเบื้องหลังใด ๆ
  • ทดสอบ 3
    Asynchronous, buffered I/O: asynchio /f*.dat
    
       Operations completed in the order issued.
       500 requests issued and completed in 0.251670 seconds.
    						
    การทดสอบนี้อธิบายลักษณะแบบซิงโครนัสของแคช อ่านทั้งหมดได้ถูกออก และดำเนินการในวินาที 0.251670 ในอย่างอื่น ร้องขอแบบอะซิงโครนัสได้สมบูรณ์ synchronously การทดสอบนี้แสดงด้วยประสิทธิภาพสูงสุดของตัวจัดการการแคชเมื่อข้อมูลในแคช
  • ทดสอบ 4
    Synchronous, buffered I/O: asynchio /f*.dat /s
    
       Operations completed in the order issued.
       500 requests and completed in 0.217011 seconds.
    						
    การทดสอบนี้แสดงผลลัพธ์เดียวกันเป็นในการทดสอบ 3 โปรดสังเกตว่า สามารถทำแบบซิงโครนัสอ่านจากแคชเล็กน้อยเร็วกว่าอ่านแบบอะซิงโครนัสไม่จากแคช การทดสอบนี้แสดงด้วยประสิทธิภาพสูงสุดของตัวจัดการการแคชเมื่อข้อมูลในแคช

บทสรุป

คุณสามารถเลือกวิธีการใดจะดีที่สุดเนื่องจากทั้งหมดขึ้นชนิด ขนาด และจำนวนของการดำเนินการที่โปรแกรมของคุณทำต่อไปนี้

การเข้าถึงแฟ้มการเริ่มต้นโดยไม่ได้ระบุค่าสถานะใด ๆ พิเศษเพื่อ CreateFile เป็นการดำเนินการแบบซิงโครนัส และเก็บไว้ชั่วคราว

หมายเหตุ:: คุณได้ทำงานแบบอะซิงโครนัสบางอย่างโดยอัตโนมัติในโหมดนี้ได้เนื่องจากโปรแกรมควบคุมระบบแฟ้มใด predictive แบบอะซิงโครนัสอ่าน ล่วงหน้า และแบบอะซิงโครนัส lazy เขียนข้อมูลที่ถูกปรับเปลี่ยน แม้ว่าการตรวจสอบนี้ไม่ให้ s แอพลิเคชัน [ASCII 146] I/O แบบอะซิงโครนัส มันเป็นกรณีนี้เหมาะสำหรับส่วนใหญ่มักแอพลิเคชันอย่างง่าย

ถ้า ที่อีกครอง โปรแกรมประยุกต์ของคุณไม่ปกติ คุณอาจต้องดำเนินการบางตัวรวบรวมสถานะและตรวจสอบประสิทธิภาพเพื่อกำหนดวิธีที่ดีที่สุด เหมือนกับการทดสอบที่มีภาพประกอบก่อนหน้าในบทความนี้ การรวบรวมสถานะเวลาที่ใช้ในฟังก์ชัน ReadFile หรือ WriteFile และจากนั้น เปรียบเทียบกับระยะเวลาที่จะใช้สำหรับการดำเนินการ I/O จริงให้เสร็จสมบูรณ์ในขณะนี้มีประโยชน์มาก ถ้าส่วนใหญ่ของเวลาจะใช้ในในการออก I/O แท้จริงแล้ว แล้ว I/O ของคุณกำลังเสร็จ synchronously อย่างไรก็ตาม ถ้าเวลาใช้ในการร้องขอ I/O ออก มีขนาดค่อนข้างเล็กเปรียบเทียบกับเวลาใช้สำหรับการดำเนินการ I/O ให้เสร็จสมบูรณ์ จาก นั้นการดำเนินการของคุณจะไม่ถือว่า asynchronously ตัวอย่างรหัสที่ระบุไว้ก่อนหน้าในบทความนี้ใช้ฟังก์ชัน QueryPerformanceCounter ทำการรวบรวมสถานะที่ภายใน

ตรวจสอบประสิทธิภาพจะช่วยตรวจสอบอย่างมีประสิทธิภาพวิธีการใช้โปรแกรมของดิสก์และแคช การติดตามเคาน์เตอร์วัดประสิทธิภาพสำหรับวัตถุในแคชใด ๆ จะบ่งชี้ประสิทธิภาพการทำงานของตัวจัดการการแคช การติดตามเคาน์เตอร์วัดประสิทธิภาพสำหรับวัตถุมีอยู่จริงของดิสก์หรือดิสก์แบบลอจิคัลจะบ่งชี้ประสิทธิภาพของระบบดิสก์

มีโปรแกรมอรรถประโยชน์ต่าง ๆ ที่มีประโยชน์ในการตรวจสอบประสิทธิภาพ PerfMon และ DiskPerf เป็นประโยชน์อย่างมาก สำหรับระบบที่จะรวบรวมข้อมูลประสิทธิภาพการทำงานของระบบดิสก์ คุณต้องออกคำสั่ง -y diskperf ก่อน หลังจากที่คุณออกคำสั่ง คุณต้องเริ่มต้นระบบเพื่อเริ่มการเก็บรวบรวมข้อมูล

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมอรรถประโยชน์เหล่านี้และตรวจสอบประสิทธิภาพการทำงาน ให้ดูที่ไดรฟ์ข้อมูล " Optimizing Windows NT " ในเอกสารประกอบของ Windows NT ทรัพยากร Kit
SQL Server ต้องใช้ระบบเพื่อสนับสนุน ‘ มีการจัดส่งไปยังสื่อที่เสถียร ’ ตาม outlined ภายใต้โปรแกรมตรวจทาน Microsoft SQL Server Always-On เก็บโซลูชันแก้ไข Foสำหรับข้อมูลเพิ่มเติมเกี่ยวกับความต้องการป้อนข้อมูล และผลลัพธ์สำหรับโปรแกรมของฐานข้อมูล SQL Server คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
967576ข้อกำหนดของโปรแกรมอินพุต/เอาท์พุตฐานข้อมูลของเซิร์ฟเวอร์ Microsoft SQL

คุณสมบัติ

หมายเลขบทความ (Article ID): 156932 - รีวิวครั้งสุดท้าย: 12 ตุลาคม 2553 - Revision: 1.0
ใช้กับ
  • Microsoft Win32 Application Programming Interface
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
Keywords: 
kbapi kbfileio kbinfo kbkernbase kbmt KB156932 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:156932

ให้ข้อเสนอแนะ