มี Windows เทียบเท่ากับ 'CPU steal time' ของ Unix หรือไม่


24

เพื่อประเมินผลการปฏิบัติงานการตรวจสอบความถูกต้องในการทำงานแบบเสมือนแพลตฟอร์มที่CPU ขโมยเวลาได้กลายเป็นที่เกี่ยวข้องมากขึ้นตัวชี้วัด - ดูEC2 การตรวจสอบ: กรณีของ CPU ที่ถูกขโมยสำหรับสรุปคำแนะนำในบริบทของAmazon EC2และ IBM ของกระดาษในเวลา CPU บัญชีสำหรับ คำอธิบายทางเทคนิคเชิงลึกเพิ่มเติม (รวมถึงภาพประกอบ) ของแนวคิด:

Steal time คือเปอร์เซ็นต์ของเวลาที่ CPU เสมือนรอ CPU จริงขณะที่ hypervisor กำลังให้บริการตัวประมวลผลเสมือนอื่น

ดังนั้นจึงมีการเปิดเผยในเครื่องมือตรวจสอบ Unix / Linux ที่เกี่ยวข้องมากที่สุดในปัจจุบัน - ดูเช่นคอลัมน์% stealหรือst in sarหรือtop:

st - เวลาขโมย
จำนวนของ CPU ที่ถูก 'ขโมย' จากเครื่องเสมือนนี้โดยไฮเปอร์ไวเซอร์สำหรับงานอื่น ๆ (เช่นการเรียกใช้เครื่องเสมือนอื่น)

ฉันไม่สามารถหาวิธีการจับตัวชี้วัดเดียวกันบน Windows ได้ แต่สิ่งนี้เป็นไปได้หรือไม่ (เป็นการดีที่สุดสำหรับWindows 2008 Server R2 AMIsบน EC2 และผ่านทางเคาน์เตอร์วัดประสิทธิภาพ Windows ที่เกี่ยวข้อง)

คำตอบ:


33

แก้ไข: การอัปเดตเมื่อวันที่ 1 ต.ค. 2556 - คำตอบเดิมของฉันบางคำกลายเป็นล้าสมัยแล้ว

ฉันไม่แน่ใจว่าคุณยังคงใช้งานเว็บไซต์นี้อยู่หรือคุณจะเห็นสิ่งนี้ แต่ฉันอยากให้คุณรู้ว่าฉันอ่านคำถามนี้วันนี้และมันทำให้ฉันหลงและฉันก็ใช้เวลาทั้งวัน (เมื่อฉันควรจะมี ทำงานได้ดี) ทำการค้นคว้าข้อมูลเกี่ยวกับ Hyper-V และ Windows และแม้กระทั่งการเจาะลึกถึงแนวคิดของการทำเวอร์ชวลไลเซชันด้วยตัวเองโดยหวังว่าฉันอาจพร้อมที่จะตอบคำถามของคุณ

ให้ฉันนำหน้าด้วยการบอกว่าฉันมาจากมุมมองของ Hyper-V เป็นแพลตฟอร์มเวอร์ชวลไลเซชันเพราะนั่นคือสิ่งที่ฉันมีประสบการณ์มากที่สุด แม้ว่าอาจมีหลักการสำคัญในการทำเวอร์ชวลไลเซชันบางอย่างดังที่เราทราบซึ่งไม่สามารถเบี่ยงเบนได้จาก Microsoft และ VMware และ Xen ล้วนมีกลยุทธ์ที่แตกต่างกันสำหรับวิธีการออกแบบไฮเปอร์ไวเซอร์ของพวกเขา

นั่นคือสิ่งแรกที่ทำให้คำถามของคุณท้าทาย คุณตั้งคำถามของคุณราวกับว่ามันเป็นไฮเปอร์ไวเซอร์ - ผู้ไม่เชื่อเรื่องพระเจ้าเมื่อไม่ใช่ความจริง ตัวอย่างเช่น Amazon EC2 ใช้ Xen hypervisor และตัวชี้วัด "CPU Steal Time" ที่คุณเห็นในผลลัพธ์ของtopคำสั่งที่ออกจากภายใน Linux VM ที่ทำงานบนไฮเปอร์ไวเซอร์นั้นเป็นผลมาจากบริการการรวมที่ติดตั้งบน guest OS นั้น (หรือเครื่องมือเสมือนจริงที่ทราบเกี่ยวกับแขก) ร่วมกับข้อมูลที่จัดทำโดย hypervisor เฉพาะนั้น

ก่อนอื่นให้ฉันเพิ่งตอบคำถามของคุณทันที: ไม่มีทางที่จะเห็นจากภายในเครื่องเสมือนที่ใช้ Windows ว่าเวลาที่โปรเซสเซอร์เป็นของเครื่องทางกายภาพที่ hypervisor ใช้เวลาทำสิ่งอื่นยกเว้นเครื่องมือเสมือน / บริการหรือเครื่องมือที่ต้องคำนึงถึงการจำลองเสมือนสำหรับไฮเปอร์ไวเซอร์เฉพาะของคุณได้รับการติดตั้งใน guest VM และไฮเปอร์ไวเซอร์เฉพาะที่แขกกำลังเรียกใช้เปิดเผยข้อมูลนั้นแก่แขก แม้แต่แขกของ Windows ที่ทำงานบนไฮเปอร์ไวเซอร์ Hyper-V จะไม่สามารถเข้าถึงข้อมูลที่เกี่ยวข้องกับเวลาที่โปรเซสเซอร์ทางกายภาพของไฮเปอร์ไวเซอร์ทำสิ่งอื่น ๆ ได้ทันที (ในการอ้างอิง voretaq7 สิ่งที่ "ทำลายกำแพงที่สี่") แม้ว่าไคลเอนต์ Windows และระบบปฏิบัติการเซิร์ฟเวอร์ที่ทำงานในฐานะแขกเสมือนใน Hyper-V ด้วยการติดตั้งบริการ / เครื่องมือการรวมที่ถูกต้องใช้ประโยชน์จาก "ตรัสรู้" (ซึ่งเป็นเคอร์เนลแท้จริง การปรับเปลี่ยนรหัสทำโดยเฉพาะสำหรับ VMs) ที่มีนัยสำคัญเพิ่มประสิทธิภาพการทำงานของพวกเขาในการใช้ทรัพยากรของโฮสต์ทางกายภาพบรรทัดล่างคือว่าไฮเปอร์ไวเซอร์ไม่ได้เพื่อให้ข้อมูลเพิ่มเติมกับระบบปฏิบัติการของแขกมากกว่าที่ต้องการ นั่นหมายความว่าไฮเปอร์ไวเซอร์ไม่จำเป็นต้องบอกแขก VM ว่ากำลังทำอะไรอยู่นอกจากให้บริการ VM ... เว้นแต่จะต้องการ และข้อมูลเกี่ยวกับตัวประมวลผลทางกายภาพที่กำลังทำอยู่นั้นเป็นสิ่งจำเป็นสำหรับการวัดจากมุมมองของ VM เช่น "CPU Steal Time: เปอร์เซ็นต์ของเวลาที่ vCPU รอสำหรับ CPU แบบฟิสิคัล"

แขกผู้มาพักจะรู้ได้อย่างไรว่าหากไม่ได้ตระหนักว่ามันเป็นเสมือนจริง?

กล่าวอีกนัยหนึ่งหากไม่มีเครื่องมือการรวมที่ถูกต้องติดตั้งบน guest แขก guest OS จะไม่ทราบด้วยซ้ำว่า CPU นั้นเป็นv vจริงๆ มันจะไม่รู้ด้วยซ้ำว่ามีแรงภายนอกตัวเอง "ขโมย" รอบ CPU จากมันดังนั้นเมตริกนั้นจะไม่มีอยู่บนเกสต์ VM

วีเอ็มแวร์ได้เริ่มเปิดเผยข้อมูลนี้แก่แขกผู้ใช้ Windows รวมถึง ESXi 5.0 เครื่องมือการรวม VMware จำเป็นต้องได้รับการอัพเดตบนแขก นี่คือการอ้างอิง ; พวกเขาอ้างถึงว่าเป็น "CPU Stolen Time"

ไฮเปอร์ไวเซอร์เช่น Hyper-V ไม่ได้ให้สิทธิ์ผู้ใช้โดยตรงในการเข้าถึงทรัพยากรทางกายภาพเช่นตัวประมวลผลทางกายภาพหรือแกนประมวลผล แทนที่จะใช้ไฮเปอร์ไวเซอร์แทน vDevs - อุปกรณ์เสมือน - เช่น vCPU

ตัวอย่างสำคัญของสาเหตุ: สมมติว่าระบบปฏิบัติการเสมือนแขกของเครื่องทำการโทรเพื่อล้าง TLB (บัฟเฟอร์การมองการแปล) ซึ่งเป็นองค์ประกอบทางกายภาพของฟิสิคัล CPU หากเกสต์ระบบปฏิบัติการได้รับอนุญาตให้ล้างTLB ทั้งหมดบนตัวประมวลผลทางกายภาพนั่นจะมีผลกระทบด้านประสิทธิภาพเชิงลบสำหรับ VM อื่น ๆ ทั้งหมดที่แชร์ TLB ทางกายภาพเดียวกันนั้นด้วย ในกรณีของ Windows การโทรใน guest OS จะถูกแปลเป็นการเรียก "ไฮเปอร์คอล" หรือ "ตรัสรู้" ซึ่งตีความโดยไฮเปอร์ไวเซอร์เพื่อให้ล้างเฉพาะส่วนของ TLB ที่เกี่ยวข้องกับเครื่องเสมือนนั้น


(น่าสนใจว่าคำแนะนำสำหรับฉันว่า VM ของแขกที่ไม่มีเครื่องมือการรวมและ / หรือบริการที่เหมาะสมอาจมีความสามารถในการส่งผลกระทบต่อประสิทธิภาพการทำงานของ VM อื่น ๆ ทั้งหมดบนโฮสต์เดียวกัน แต่นั่นอยู่นอกขอบเขตของหัวข้อนี้อย่างสมบูรณ์ .)


ข้อมูลทั้งหมดที่จะกล่าวว่าคุณยังคงสามารถตรวจจับได้ในโฮสต์ Hyper-V เวลาที่ตัวประมวลผลเสมือนที่ใช้รอตัวประมวลผลจริงพร้อมใช้งานเพื่อให้สามารถกำหนดเวลาให้ทำงานได้ แต่คุณจะเห็นเฉพาะข้อมูลนั้นใน hypervisor ของ Windows Hyper-V หากเป็นไปได้ที่จะเห็นสิ่งนี้ในไฮเปอร์ไวเซอร์อื่นฉันขอแนะนำให้ผู้อื่นบอกเราว่าจะเห็นสิ่งนี้ในไฮเปอร์ไวเซอร์นั้นได้อย่างไรและหากมีการเปิดเผยต่อแขก (แก้ไข 10/1/2556 ขอบคุณ evilensky ที่ทำแบบนั้น!)

เครื่องทดสอบของฉันคือ Hyper-V Server 2012 ซึ่งเป็นรุ่นฟรีของ Server 2012 ที่ใช้งาน Core และ Hyper-V เท่านั้น มันมีประสิทธิภาพเหมือนกับ Windows Server 2012 ทุกเครื่องที่ใช้ Hyper-V

ไฟขึ้น Perfmon ในพาร์ติชันหลักของคุณหรือที่เรียกว่าฟิสิคัลโฮสต์ โหลดตัวนับนี้:

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

คุณจะสังเกตเห็นว่าจะมีอินสแตนซ์ของตัวนับนั้นสำหรับแต่ละเครื่องเสมือนบนไฮเปอร์ไวเซอร์นั้นรวมถึง _Total คำจำกัดความของ Microsoft ของตัวนับ Perfmon นั้นคือ:

เวลาเฉลี่ย (เป็นนาโนวินาที) ที่ใช้ในการรอตัวประมวลผลเสมือนที่จะส่งไปยังตัวประมวลผลเชิงตรรกะ

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

เคาน์เตอร์ประสิทธิภาพอื่น ๆ ในไฮเปอร์ไวเซอร์ที่คุณจะต้องการตรวจสอบมีHyper-V Hypervisor Root Virtual Processor\% Guest Run Time, และ% Hypervisor Run Time % Total Run Timeตัวนับเหล่านี้จะให้เปอร์เซ็นต์ที่สามารถใช้เพื่อกำหนดข้อเท็จจริงเช่นเวลาที่โปรเซสเซอร์ "ของจริง" ใช้เวลาทำสิ่งอื่นนอกเหนือจากการให้บริการ VM หรือ VM ทั้งหมด

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

ฉันรู้ว่าไม่มีทางในแขกของ Windows เครื่องมือติดตั้งรวมหรือไม่ติดตั้งเพื่อดูว่ามีเวลามากเพียงใดในแง่ของวินาทีหรือเปอร์เซ็นต์ที่โฮสต์ของ VM ใช้บริการหรือไม่ให้บริการตามเวลาของตัวประมวลผลทางกายภาพทั้งหมด (แก้ไข 10/1/2556: ESXi 5.0 หรือดีกว่าเปิดเผยข้อมูลนี้แก่ guest VM ผ่านเครื่องมือการรวม แต่ยังไม่มีอะไรใน Hyper-V)


1
+1 - คำตอบที่ยิ่งใหญ่คือมหากาพย์
Mark Henderson

1
+1 สำหรับการสำรวจอย่างละเอียดชื่นชมอย่างมาก ดังนั้นเกี่ยวกับ EC2 สิ่งนี้ทำให้ boils แขกผู้ใช้ Unix / Linux ทำงานในXen paravirtualโหมดซึ่งเป็นโดเมน paravirtualized (เช่นไม่ใช่ virtualization แบบเต็มระบบปฏิบัติการ guest ได้รับการแก้ไขให้ทำงานบนโฮสต์) ซึ่งมีเวลาขโมยพร้อมกับ Windows / FreeBSD / ... แขกที่เข้าใช้Xen HVMซึ่งเป็นโดเมนที่จำลองฮาร์ดแวร์ (เช่นแขกของ OS ไม่ได้รับการแก้ไขให้ทำงานบนโฮสต์) ซึ่งดูเหมือนว่ามันไม่ได้เป็น - ดังนั้นคำตอบเชิงลบที่แน่นอนให้เดาว่าเป็นสิ่งที่นับ ฉันอ่านคุณอย่างถูกต้องหรือไม่ว่าจะสามารถเพิ่มได้ในที่สุด?
Steffen Opel

2
ในทางทฤษฎีอาจทำได้ แต่อย่ากลั้นหายใจ อย่างที่ฉันบอกว่ามันต้องการให้ hypervisor เฉพาะของผู้จัดจำหน่ายและแขกของผู้ขายเฉพาะระบบปฏิบัติการพยายามประสานงานเพื่อให้ข้อมูลเกี่ยวกับฟิสิคัลโฮสต์พร้อมใช้งานและสามารถเข้าถึงได้จากภายใน VM guest wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix
Ryan Ries

2
Tangential: VMware hypervisors จะอ้างถึงทีมที่ขโมยเวลา - จำนวนเวลาที่ CPU เสมือนรอให้บริการโดยทรัพยากรทางกายภาพ
Yolo Perdiem

1
นี่เป็นหัวข้อที่รู้จักกันดีในเมนเฟรม ตัวชี้วัดนี้มีมาหลายทศวรรษแล้ว มันเรียกว่า "wait on cpu"

2

FWIW ฉันเพิ่งดูเคาน์เตอร์ Perfmon ของเซิร์ฟเวอร์ Windows 2008r2 ที่ทำงานภายใต้ Hyper-V และไม่เห็นเวลาที่เกี่ยวข้องในการขโมย (หรือการจำลองเสมือนเลย)


ขอบคุณสำหรับการตรวจสอบ - เห็นได้ชัดว่าVirtualization Countersสำหรับ Hyper-V ควรพร้อมใช้งานจริง ๆ หรืออาจต้องติดตั้ง / เปิดใช้งานก่อน ฉันยังคงไม่สามารถระบุ / อนุมานตัวชี้วัดที่คล้ายกัน / ที่เกี่ยวข้องได้
Steffen Opel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.