ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ Windows ของฉันสลับเปลี่ยนหรือไม่


29

ฉันใช้ Process Explorer เพื่อตรวจสอบ windows server ของฉันในขณะที่สร้างข้อมูลบางส่วน เป็นกระบวนการที่ใช้ CPU เป็นหลัก แต่ฉันต้องการตรวจสอบให้แน่ใจว่าไม่ได้สลับกัน ฉันจะรู้ได้อย่างไรว่าใช้ Process Explorer การคาดเดาครั้งแรกของฉันอยู่ในหน้าต่างข้อมูลระบบมันเป็นแฟ้มเพจการเขียนเดลต้า ใช่? ไม่มี? ฉันเป็นคนงี่เง่า?

* ภาพหน้าจอไม่ใช่ของเซิร์ฟเวอร์ ... เป็นเพียงตัวอย่าง

alt text http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

คำตอบ:


30

"Pages Input / sec เป็นตัวนับให้ชม แต่คุณไม่ควรกังวลเกี่ยวกับ" การสลับ "เนื่องจากหน้าต่างไม่ได้ใช้ไฟล์หน้าเช่น * nixes

ก่อนอื่นคุณต้องเข้าใจว่า windows windows ไม่เข้าออก ฉันจะอ้างอิงส่วนที่เกี่ยวข้องของโพสต์บล็อกของEric Lipperts (แก้ไขเบา ๆ ) เนื่องจากฉันไม่สามารถพูดได้ดีกว่า:

"แรมสามารถมองได้ว่าเป็นเพียงการเพิ่มประสิทธิภาพการเข้าถึงข้อมูลใน RAM ซึ่งข้อมูลถูกเก็บไว้ในสนามไฟฟ้าที่แพร่กระจายใกล้กับความเร็วแสงนั้นเร็วกว่าการเข้าถึงข้อมูลบนดิสก์ซึ่งข้อมูลถูกเก็บไว้ในมหาศาล โมเลกุลโลหะเหล็ก

ระบบปฏิบัติการจะติดตามว่าหน้าใดของที่เก็บซึ่งกระบวนการเข้าถึงบ่อยที่สุดและสร้างสำเนาของพวกเขาใน RAM เพื่อเพิ่มความเร็ว เมื่อกระบวนการเข้าถึงตัวชี้ที่สอดคล้องกับเพจที่ไม่ได้แคชใน RAM ในปัจจุบันระบบปฏิบัติการจะทำ“ page fault” ออกไปที่ดิสก์และทำสำเนาหน้าจากดิสก์ไปยัง RAM ทำให้มีข้อสันนิษฐานที่สมเหตุสมผล กำลังจะเข้าใช้อีกครั้งในไม่ช้า

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

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

เมื่อระบบปฏิบัติการคาดเดาไม่ถูกต้องหรือมีโอกาสมากขึ้นเมื่อมี RAM ไม่เพียงพอที่จะจัดเก็บหน้าเว็บที่เข้าถึงบ่อยในกระบวนการที่กำลังทำงานอยู่ทั้งหมดเครื่องจะเริ่ม“ thrashing” ระบบปฏิบัติการใช้เวลาทั้งหมดในการเขียนและอ่านที่เก็บข้อมูลดิสก์ที่มีราคาแพงดิสก์ทำงานอย่างต่อเนื่องและคุณไม่ได้ทำงานอะไรเลย

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

อีกวิธีในการดูที่นี่คือจำนวนหน่วยความจำเสมือนทั้งหมดที่โปรแกรมของคุณใช้งานนั้นไม่เกี่ยวข้องกับประสิทธิภาพของโปรแกรมมากนัก สิ่งที่เกี่ยวข้องไม่ใช่จำนวนหน่วยความจำเสมือนทั้งหมดที่ใช้ แต่ (1) หน่วยความจำนั้นไม่ได้ใช้ร่วมกับกระบวนการอื่น (2) จำนวน "ชุดการทำงาน" ของหน้าเว็บที่ใช้กันทั่วไปมีขนาดใหญ่เพียงใดและ ( 3) ชุดการทำงานของกระบวนการที่ใช้งานอยู่ทั้งหมดนั้นมีขนาดใหญ่กว่า RAM ที่มีหรือไม่

ถึงตอนนี้มันควรจะชัดเจนว่าทำไมข้อผิดพลาด“ หน่วยความจำไม่เพียงพอ” มักจะไม่เกี่ยวข้องกับจำนวนหน่วยความจำกายภาพที่คุณมีหรือจำนวนหน่วยความจำที่มีอยู่ มันมักจะเกี่ยวกับพื้นที่ที่อยู่ซึ่ง Windows 32 บิตมีขนาดค่อนข้างเล็กและแยกส่วนได้ง่าย "

จุดเพิ่มเติมไม่กี่:

  1. ที่กำลังและไฟล์โปรแกรมจะถูกเพจเท่านั้นเสมอไม่เคยออกเพราะพวกเขาอยู่แล้วในดิสก์ (และมักจะเป็นหน้าแรกที่เป็นอิสระเมื่อ ram ทางกายภาพต่ำ)
  2. คุณมีจำนวน likley เหลือหมดหน้าตารางฟรีหรือมีหน่วยความจำ fragemented หนักกว่าปัญหาหน่วยความจำอื่น ๆ (นอกเหนือจากประสิทธิภาพโดยรวมแย่ตามที่กล่าวถึงแล้ว)
  3. แม้ว่าคุณจะเรียกใช้โดยไม่มีไฟล์หน้าคุณยังสามารถได้รับความผิดพลาดของหน้า
  4. โดยทั่วไปการพูดถึงการมองหาหน่วยความจำที่ได้รับมอบหมายนั้นบอกได้มากกว่าว่ากระบวนการใช้หน่วยความจำอย่างไร

สำหรับภาพรวมของวิธีการจัดการหน่วยความจำทำงานใน windows ดู

ตัวจัดการหน่วยความจำเสมือนใน Windows NT

หากคุณคิดว่าคุณมีปัญหาหน่วยความจำฉันขอแนะนำให้ดูงานนำเสนอนี้ในการแก้ไขปัญหาหน่วยความจำหน้าต่าง

ต่อไปนี้เป็นคำอธิบายที่ดีว่าทำไมบางครั้งคุณถึงได้รับ "หน่วยความจำไม่พอ" เมื่อคุณไม่ต้องขอบคุณการกระจายตัวของหน่วยความจำ:

ดูเพิ่มเติมที่การผลักดันขีด จำกัด ของ Windows: หน่วยความจำกายภาพ

เพิ่มเติมเกี่ยวกับหน่วยความจำเสมือนการกระจายตัวของหน่วยความจำและรอยรั่วและ WOW64

RAM, หน่วยความจำเสมือน, Pagefile และทุกอย่างนั้น (การสนับสนุนของ Microsoft)

ปรับปรุง:

Windows 10 ทำบางสิ่งที่แตกต่างกับหน่วยความจำเล็กน้อยและเมื่อเวลาผ่านไปคุณจะเห็นกระบวนการที่เรียกว่า "ระบบและหน่วยความจำที่ถูกบีบอัด" Windows 10 จะเพิ่ม "ที่เก็บการบีบอัด" ลงในรายการเพจจิ้ง ram นี้คือหน่วยความจำ USER ที่เป็นของระบบ (โดยทั่วไประบบจะมีหน่วยความจำเคอร์เนลเท่านั้น) หน่วยความจำนี้ถูกบีบอัดเพื่อลดค่าเฉลี่ยลงประมาณ 30% สิ่งนี้ช่วยให้สามารถเก็บหน้าได้มากขึ้นในหน่วยความจำ (สำหรับผู้ที่คุณกำลังทำคณิตศาสตร์นั่นคือพื้นที่มากขึ้น 70%) โปรดทราบว่าหากหน่วยความจำยังคงมีแรงกดดันอยู่หน้าจากที่จัดเก็บการบีบอัด รายการ (บีบอัด) ซึ่งสามารถเขียนไปยังไฟล์เพจจริงได้ ระบบจะเห็นว่าพวกเขามาจากพื้นที่โหมดผู้ใช้ระบบและบีบอัดและจะไม่พยายามที่จะนำพวกเขากลับมาในร้าน ดังนั้นในระบบ windows 10 มันอาจดูเหมือนว่าระบบกำลังสูดดม ram แต่ที่จริงแล้วมันแค่พยายามใช้ ram ให้มีประสิทธิภาพมากขึ้น ผู้ใช้ Mac ใช้คุณสมบัติที่คล้ายกันมาตั้งแต่ปี 2013 และเคอร์เนล Linux รุ่นใหม่ใช้การบีบอัดหน่วยความจำ วิธีการอนุรักษ์หน่วยความจำนี้ไม่เพียง แต่จะดีขึ้น แต่ยังพบได้ทั่วไปในระบบปฏิบัติการอื่น


6

ใช่เดลต้าเพจจิ้งจะให้คุณบ่งชี้สดของเซิร์ฟเวอร์เป็นเพจจิ้ง (หรือ "การแลกเปลี่ยน") แต่ในขณะนั้นเท่านั้น หากต้องการดูอย่างใกล้ชิดยิ่งขึ้นและเพื่อดูมุมมองประวัติศาสตร์ฉันขอแนะนำให้ใช้การตรวจสอบประสิทธิภาพ ( perfmon.exe )เพื่อสร้างแผนภูมิหรือบันทึกเดลตาเหล่านั้น (และตัวนับประสิทธิภาพอื่น ๆ ที่น่าสนใจซึ่งอาจช่วยให้สัมพันธ์หรือกิจกรรมเฉพาะกับ spikes กิจกรรมการเพจ)


5

การตรวจสอบประสิทธิภาพ (perfmon) เป็นเพื่อนของคุณที่นี่ คุณกำลังมองหาข้อบกพร่องของหน้ากระดาษแข็ง (นั่นคือข้อบกพร่องของหน้าเมื่อหน้าหน่วยความจำที่จำเป็นในการดำเนินการตามคำขอจะต้องอ่านจากดิสก์) ดังนั้นการตรวจสอบทั้งหน้ากระดาษแข็งและอ่อนนั้นเหมาะสมที่สุด

ดูตัวนับ "หน้าที่ป้อนข้อมูล / วินาที" ในวัตถุ "หน่วยความจำ" โดยใช้ perfmon เพื่อรับความรู้สึกว่ามีข้อบกพร่องจำนวนหน้ากระดาษเกิดขึ้น


0

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


3
mh: ฉันไม่แน่ใจว่าฉันเห็นด้วยกับกฎง่ายๆ หากค่าการคอมมิชชันนั้นสูงกว่าหน่วยความจำกายภาพนั่นหมายความว่ามีบางสิ่งที่ถูกเพจในบางจุด แต่ระบบไม่จำเป็นต้องทำการเพจใด ๆ บางสิ่งจะถูกเพจเอาต์เมื่อเกิดข้อผิดพลาดของหน้า มิฉะนั้นฉันยอมรับว่าการใช้บัฟเฟอร์ข้อมูลคงที่เดียวจะดีที่สุด แต่แล้วฉันคิดว่าเราอาจย้ายเข้าสู่ realm ของ stackoverflow.com
Jessica McKinnon

ฉันไม่ดีฉันควรจะพูดว่า "มีอะไรบางอย่างที่เปลี่ยนไปในอดีตและคำขอหน่วยความจำในอนาคตจะต้องมีการแลกเปลี่ยน"
Maximus Minimus

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