เหตุใดการล้างข้อมูลบนดิสก์จึงใช้เวลาและ cpu มาก


29

เป็นเพียงคำถามที่อยากรู้อยากเห็น การล้างข้อมูลบนดิสก์ได้ใช้จ่าย 100% ของหนึ่งในคอร์ของฉันมาระยะหนึ่งแล้วและยังดำเนินต่อไป ดูเหมือนว่าจะใช้เวลามากโดยเฉพาะใน Windows Update Cleanup

ไม่เข้าใจเลยว่าทำไมการลบไฟล์จึงเป็นกิจกรรมที่เข้มข้น โดยเฉพาะอย่างยิ่งเนื่องจากมันใช้เวลาค่อนข้างมากในการคำนวณสิ่งที่สามารถลบได้

เหตุใดการล้างข้อมูลบนดิสก์จึงใช้เวลาและ cpu มาก มันเข้มข้นแค่ไหน?

สองในสี่คอร์ maxed out

คำตอบ:


20

Windows บีบอัดโฟลเดอร์ WinSxS โดยการลบการปรับปรุงแทนที่ไฟล์บีบอัดโฆษณาซึ่งไม่สามารถถอนการติดตั้งและไม่ได้ใช้เป็น diffs สิ่งนี้ใช้พลังงาน CPU มากและนั่นเป็นสาเหตุที่คุณเห็นการใช้งาน CPU สูง

คุณสามารถวิเคราะห์การใช้ CPU ด้วย xperf / WPAเพื่อตรวจสอบสิ่งนี้


ไม่คำนวณพื้นที่ที่บันทึกไว้เมื่อบีบอัดไฟล์ที่เก่าที่สุด (ที่ไม่ได้เปิดล่าสุด) หรือไม่
Justin Goldberg

วิดีโอดี! จะตรวจสอบเครื่องมือนั้นอย่างแน่นอน: D
Svish

@Svish คุณตรวจสอบสิ่งนี้แล้วหรือยัง คำถามตอบหรือไม่?
magicandre1981

4

ฉันสามารถยืนยันได้ว่า Windows Update Cleanup ใช้งาน CPU ได้เกือบ 100% ทุกอย่างเกี่ยวกับการบีบอัด WinSxS และการรวมการอัปเดตอีกครั้ง:

การใช้งาน Windows Cleanup 100% CPU

ฉันเริ่มล้างข้อมูลครั้งแรกหลังจากติดตั้ง Windows และใช้เวลา 2 ชั่วโมงกว่าจะเสร็จ 50% จากกราฟคุณสามารถเห็นได้ว่าในการอ่านไฟล์ขนาดเล็กจำนวนมากครั้งแรกจากดิสก์ (กราฟที่สอง) และหลังจากการใช้งาน CPU 100% สำหรับการบีบอัดและอื่น ๆ


2

เพียงเพื่อจุดไฟในคำถามที่ฉันได้ทำในเครื่องเสมือนที่แก้ไขไม่ได้ขั้นตอนต่อไป:

  1. บู๊ต SystemRescueCD และติดตั้งพาร์ติชัน windows
  2. รายการไฟล์ทั้งหมดบนดิสก์ไปยังไฟล์บันทึก (น้อยกว่าหนึ่งนาที)
  3. รีบูตเข้าสู่ Windows
  4. ปล่อยให้cleanmgrทำงานและจดบันทึกเวลา (มากกว่าแปดชั่วโมง)
  5. รีบูตเข้าสู่ SystemRescueCD และติดตั้งพาร์ติชัน windows
  6. รายการไฟล์ทั้งหมดบนดิสก์ไปยังไฟล์บันทึกอื่น (น้อยกว่าหนึ่งนาที)
  7. รีเซ็ตกลับเครื่องเสมือนที่ไม่สามารถแก้ไขได้
  8. รีบูตเข้าสู่ Windows
  9. ทำ FOR / F ... เพื่อลบไฟล์ดังกล่าวในพรอมต์คำสั่งผู้ดูแลระบบ (cmd) และจดบันทึกเวลา (น้อยกว่าห้านาที)

โปรดทราบฉันเริ่มระบบใหม่บน Linux SystemRescueCd เพื่อให้สามารถแสดงรายการไฟล์ทั้งหมดรวมถึงไฟล์ที่ค้นหาโดย Window และทำรายการดังกล่าวให้เร็วที่สุดเท่าที่จะทำได้ (ไม่มีการตรวจสอบ acl และอื่น ๆ )

นอกจากนี้โปรดทราบว่าเมื่อcleanmgrฉันนับเวลาเท่านั้นหลังจากการค้นหาสิ้นสุดลง (การค้นหาตัวเองใช้เวลานานกว่าหกชั่วโมง)

ดังนั้นการลบไฟล์ไม่ใช่คอลบ็อต (การลบเองต้องการเพียงห้านาที แต่cleanmgrใช้เวลามากกว่าแปดชั่วโมง)

การลบด้วยตนเองสามารถทำได้อย่างรวดเร็วเนื่องจากโฮสต์เป็น Linux ความเร็วนั้นเกิดขึ้นเนื่องจาก Linux แคชทั้งหมดเขียนไปยังไฟล์ขนาดคงที่ที่ใช้เป็นดิสก์บนเครื่องเสมือน (24GiB) และเนื่องจากฉันมี 64GiB ของ RAM และฉันปล่อยให้ Windows 16GiB มันไม่จำเป็นต้องใช้ SWAP ทั้ง PAGEFILE.SYS; ยิ่งกว่านั้น Linux สามารถเก็บไฟล์เต็มรูปแบบบน RAM (ฉันทดสอบกับไฟล์นั้นบน RAM และลบเวลาที่ทำไปมาก แต่cleanmgrเวลาไม่ลดลง)

ใช่ถ้าฉันใส่ดิสก์เสมือนทั้งหมดบน RAM cleanmgrเวลาจะไม่ลดลง แต่ถ้าฉันจัดการลบไฟล์เวลานั้นก็ลดลงเพียงเล็กน้อย (Linux เขียนแคชดีมากเมื่อคุณมี RAM 64GiB อยู่)

การกำหนดค่าของฉันสำหรับการทดสอบ:

  • โฮสต์: ลินุกซ์ 64 บิตกระจายอยู่เหนือฮาร์ดแวร์ที่ชิ้นส่วนหลักคือ AMD Deca Core 5GHz พร้อม RAM 64GiB และคอนโทรลเลอร์ Sata Raid0 พร้อมด้วย WD VelociRaptor HDD สองตัว 300MiB / s) ค่าใช้จ่าย> หมื่นยูโร
  • แขก: Windows 10 Home พร้อม RAM ขนาด 16GiB และดิสก์เสมือน 24GiB

Test1: การมีดิสก์เสมือน 24GiB บนฮาร์ดดิสต์ทางกายภาพ Test2: การมีดิสก์เสมือน 24GiB บน RAM โฮสต์ Linux

ฉันกลัวว่าcleanmgrจะทำบางสิ่งบางอย่างในรีจิสทรีของ windows ต่อไฟล์ที่ถูกลบ (การเข้าถึงรีจิสทรีต่ำมาก)

จอภาพที่ฉันมี:

  • การใช้ CPU ในโฮสต์ Linux และ Windows Guest (เวลาส่วนใหญ่ระหว่าง 0% ถึง 1% โดยมีการ pikes 5% ไม่มาก)
  • การใช้งาน HDD บนโฮสต์ Linux (ใกล้ 0% เมื่อcleanmgrทำงานด้วย pikes 2%) แคชดิสก์ของ Linux ดีมาก ๆ ที่หลีกเลี่ยงการส่ง dato ไปยังดิสก์จริง
  • การใช้งาน HDD ในแขกของ Windows (เวลาส่วนใหญ่ระหว่าง 2% ถึง 15% เมื่อcleanmgrทำงานโดยมี pikes 28%)

เห็นได้ชัดว่าcleanmgrกำลังทำงานที่ตรวจจับไม่ได้มากมายบางทีเวลานอนหลับ? อาจจะไม่ใช่ถ้ามันเป็นค่ารีจิสทรี, ซีพียูที่ไม่ได้ถูกนับด้วยจอภาพ Windows, HDD ที่ไม่ได้ใช้ (รีจิสตรีอยู่ใน RAM) เป็นต้นและการเข้าถึงรีจิสตรีแต่ละครั้งอาจใช้เวลานานกว่า .. ลองใช้โปรแกรมของคุณเองเพื่อเข้าถึงรีจิสตรีโดยการเปิดรีจิสตรีและปิดมันต่อการกระทำแต่ละครั้งเมื่อเปิด HK * ขึ้นมา ... มันแตกต่างกันมาก

ดังนั้นถ้าcleanmgrทำสำหรับแต่ละไฟล์:

  1. เปิดรีจิสตรี HK *
  2. ศึกษาสิ่งที่ต้องการและ / หรือเขียนบางอย่างในรีจิสทรี
  3. ปิดรีจิสตรี HK *

อาจใช้เวลามากถึงสองหรือสามวินาทีต่อการดำเนินการหนึ่งครั้งและหากใช้การดำเนินการหนึ่งไฟล์ต่อหนึ่งไฟล์อาจใช้เวลาเกือบหนึ่งชั่วโมงต่อหนึ่งพันไฟล์แต่ละไฟล์ ... จำนวนไฟล์ของฉันนั้นมากกว่า 40000 ไฟล์เล็กน้อย ดังนั้นไฟล์ 40000 ไฟล์ / 8 ชั่วโมงกำลังประมวลผลหนึ่งไฟล์ในแต่ละ 1.3 วินาที ... ในอีกด้านหนึ่งการลบไฟล์ในสคริปต์ (หลังจากรู้ไฟล์แล้ว) ใช้เวลาน้อยกว่าห้านาทีซึ่งจะลบประมาณ 133 ต่อวินาที ... hufe ข้อแตกต่าง

ดังนั้นcleanmgrเวลาแน่นอนไม่ได้เกิดจากตัวdeletionมันเอง! มันทำอะไรอีก? กรุณา M $ ปรับปรุงความเร็วนั้น!


1
นี่ไม่ใช่คำตอบสำหรับคำถามเดิม หากคุณมีคำถามใหม่โปรดถามคำถามของคุณเอง (อ้างอิงคำถามนี้เพื่อรับทราบบริบทหากมีปัญหา)
DavidPostill

ทำไมคุณไม่ใช้การตรวจสอบกระบวนการ ( docs.microsoft.com/en-us/sysinternals/downloads/procmon ) เพื่อวิเคราะห์การกระทำของ windows registry ฯลฯ
cybernard

* i m sp ที่เปลี่ยนแปลงไม่ได้
StingyJack

2

วิธีหนึ่งในการลดปัญหานี้และเพิ่มความเร็วในช่วง "การล้างข้อมูลบน Windows Update" ของ "การล้างข้อมูลบนดิสก์" บิตคือการตั้งค่าลำดับความสำคัญที่สูงขึ้นสำหรับกระบวนการTiWorker.exeเป็นการชั่วคราวในช่วงระยะเวลาของกิจกรรม 'ล้างข้อมูล'

ในบานหน้าต่าง 'รายละเอียด' ตัวจัดการงานให้ค้นหาTiWorker.exeและคลิกขวาเพื่อแสดงเมนูป๊อปอัป สำหรับ 'Set Priority "ให้เลือก" Above Normal "สำหรับฉันสิ่งนี้เพิ่มTiWorkerกิจกรรม CPU - จากค่าเฉลี่ยประมาณ 16% - จนถึงศักยภาพเต็ม 25% (บนเครื่อง 4 คอร์)

ป้อนคำอธิบายรูปภาพที่นี่

นอกเหนือจากการเร่งความเร็วขั้นต่ำ - และความรู้สึกที่ดีของความสำเร็จ - สิ่งนี้ให้มีสิ่งเล็ก ๆ น้อย ๆ ที่สามารถทำได้เนื่องจากเห็นได้ชัดว่า "Windows Update Cleanup" ถูกเข้ารหัสในลักษณะที่ด้วยเหตุผลบางอย่างที่ไม่ทราบวิธีดำเนินการต่อไฟล์ ทำให้การทำงานโดยรวมของดิสก์ถูกผูกมัดอย่างน่ากลัว

และรู้ว่ากระบวนการนั้นอาจจะไม่แขวนและจะเสร็จสมบูรณ์ในสักวันหนึ่ง ในการตรวจสอบสิ่งนี้ (และเพื่อเบี่ยงเบนความสนใจตัวเองในช่วงเวลารอคอยที่น่ารำคาญนี้) คุณสามารถตรวจสอบส่วน 'กิจกรรมดิสก์' ของResource Monitor (เรียกใช้ "resmon.exe")


ความเร็วดีมากขึ้น!
subjectivist

1

การลบขนาดไฟล์ 20 mb 5 mb จะใช้เวลาในการลบมากกว่า 10 ไฟล์ที่มีขนาด 64mb นี่เป็นเพราะเมื่อระบบลบไฟล์มันไม่ได้ลบออกจริงๆ (เนื่องจากพื้นที่ว่างในไดรฟ์สามารถทำจาก "สัญญาณรบกวน" บิต) แต่เพียงเขียนทับส่วนหน้าที่ระบุว่า "ไฟล์เริ่มต้นที่นี่" ด้วยความหมายแล้ว มันจะเขียนทับสิ่งนั้นและส่วนต่อไปในภายหลังอย่างมีความสุขเมื่อคุณต้องการใช้พื้นที่ ในความเป็นจริงการลบจะเหมือนกับการเขียนเป็นอย่างอื่น

สิ่งที่มีการล้างข้อมูลบนดิสก์คือสิ่งที่ทำความสะอาดมักเป็นไฟล์ขนาดเล็กจำนวนมาก (คุกกี้อินเทอร์เน็ตไฟล์ชั่วคราว ฯลฯ ) ด้วยเหตุนี้จึงมีการเขียนลงดิสก์มากกว่าสิ่งอื่น ๆ อีกมากมายและอาจต้องใช้เวลามากเท่ากับการติดตั้งสิ่งใหม่ ๆ เนื่องจากปริมาณการเขียนลงดิสก์


คำถามเดิมถามเกี่ยวกับการล้างข้อมูลบนดิสก์โดยเฉพาะ
liljoshu

0

คำเตือนอีกคำหนึ่ง: ส่วนหนึ่งของสิ่งที่ต้องใช้เวลาคือเมื่อทำความสะอาด WinSxS แล้ว Disk Clean-up จะมีการบีบอัดไฟล์จำนวนมากก่อน ดังนั้นการใช้งานดิสก์จึงเพิ่มขึ้นในส่วนแรกของการล้างข้อมูล!


-2

อีกวิธีในการเร่งกระบวนการคือการเรียกใช้ Disk Cleanup ประมาณ 5 นาที หยุดมันแล้วเริ่มใหม่อีกครั้งและมันจะส่งเสียงหวือหวาในระยะเวลาอันสั้น! นอกจากนี้การแยกส่วนหรือการเพิ่มประสิทธิภาพ HDD / SSD ของคุณล่วงหน้าจะช่วยให้สิ่งต่าง ๆ เร็วขึ้นเพียงจำไว้ว่าจะแยกส่วน / Optz อีกครั้งหลังจากล้างข้อมูล


กรุณาอย่าจัดระเบียบ SSD ของคุณมันหมดรอบการอ่านและเขียนรอบและเกือบจะไม่ได้รับ
Nordlys Jeger

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.