Score:1

ผลลัพธ์ของ Linux time wrapper บอกอะไรฉันเกี่ยวกับคำสั่ง cp นี้

ธง in

มุมมองของฉันเกี่ยวกับปัญหานี้มาจากฝั่งผู้พัฒนา ฉันเขียนโค้ดที่วางบนเครื่องเสมือน RHEL ซึ่งทำงานเป็นหนึ่งในหลายโค้ดในระบบองค์กร ระบบไฟล์ที่ใช้คืออุปกรณ์เก็บข้อมูลระยะไกลที่ต่อกับเครือข่าย

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

เรารันคำสั่งต่อไปนี้ทุกๆ 30 นาทีและบันทึกผลลัพธ์ เป็นสำเนาของไฟล์ขนาด 6 กิกะไบต์ สิ่งที่ฉันเห็นคือเวลาที่ผ่านไปกระโดดจาก 11 วินาทีเป็น 190 วินาทีเมื่อระบบกำลังรันงานจำนวนมากและคำสั่งทดสอบนี้ได้รับเวลา CPU ต่ำ

สิ่งที่ฉันเห็นคือคอลัมน์ "I" (อินพุตระบบไฟล์) ได้รับการเติมข้อมูลเมื่อ CPU ต่ำ แต่จะไม่ถูกเติมเมื่อสูง คอลัมน์ "w" (การแลกเปลี่ยนโดยไม่สมัครใจ) ก็สูงกว่ามากเช่นกัน

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

กำลังรันคำสั่ง:

/usr/bin/time -a -o filename.txt cp file.txt fileCopy.txt
วันที่ เวลา อี ยู พี ฉัน
3/14/2022 5:19:02 64.9 16.23 1.03 26% 3005 29210 12000016 12000000
3/14/2022 5:49:02 12.7 11.63 0.79 97% 2069 76 0 12000000
3/14/2022 6:19:02 100.39 14.74 0.78 15% 1034 29925 12000136 12000000
3/14/2022 6:49:24 191.32 18.86 0.94 10% 3374 36164 12001024 12000000
3/14/2022 7:19:02 71.61 15.61 0.88 23% 1610 30316 12000296 12000000
3/14/2022 7:49:02 70.73 17.5 0.91 26% 1408 29540 12000072 12000000
3/14/2022 8:19:02 10.95 9.89 0.7 96% 1709 75 0 12000000
3/14/2022 8:49:02 11.01 10.22 0.73 99% 239 85 0 12000000

คำอธิบายคอลัมน์จาก man page สำหรับ /usr/bin/time

e เวลาจริงที่ผ่านไป (เป็นวินาที)
S จำนวนวินาที CPU ที่กระบวนการใช้ในโหมดเคอร์เนล
U จำนวนวินาที CPU ที่กระบวนการใช้ในโหมดผู้ใช้
P เปอร์เซ็นต์ของ CPU ที่งานนี้ได้รับ คำนวณเป็น (%U + %S) / %E
c จำนวนครั้งที่กระบวนการสลับบริบทโดยไม่สมัครใจ (เนื่องจากการแบ่งส่วนเวลาหมดอายุ)
w จำนวนการรอ: เวลาที่โปรแกรมสลับบริบทโดยสมัครใจ เช่น ในขณะที่รอให้การดำเนินการ I/O เสร็จสิ้น
I จำนวนอินพุตระบบไฟล์โดยกระบวนการ
O จำนวนเอาต์พุตของระบบไฟล์ตามกระบวนการ
Score:1
ธง cn

P ในบริบทนี้หมายถึงอัตราส่วนของเวลา CPU ที่งานนี้ได้รับต่อเวลาทั้งหมดที่ผ่านไป ใกล้ 100% หมายถึงเวลาเกือบทั้งหมดอยู่บน CPU ดังนั้น CPU จึงถูกจำกัดสำหรับการรันเหล่านั้น ตรงกันข้ามกับการวิ่งครั้งอื่นที่มีอย่างอื่นเป็นปัจจัยจำกัด เวลาของระบบ (หรือที่เรียกว่าเคอร์เนล) มากกว่าเวลาของระบบ ซึ่งเป็นเรื่องปกติของงานหนักของ I/O

เนื่องจากเวิร์กโหลดถูกคัดลอกไฟล์ขนาด 6 GB เราสามารถอนุมานได้ว่าการรัน 11 วินาทีโดยเฉลี่ยมากกว่าการเขียน 0.5 GB ต่อวินาที คอลัมน์ O ยืนยันจำนวนการเขียนเท่ากันในแต่ละครั้ง ซึ่งสอดคล้องกับกระบวนการคัดลอกหนึ่งไฟล์อย่างง่าย

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

นี่เป็นงาน 200 วินาที ซึ่งบางครั้งอาจใช้เวลา 12 วินาที น่าจะเกิดจากแคชของหน้า Linux


การค้นหาสาเหตุของปัญหาด้านประสิทธิภาพมักต้องการความเข้าใจอย่างลึกซึ้งเกี่ยวกับระบบโดยรวม มากกว่าที่จะต้องใช้เมตริกชุดใดชุดหนึ่ง

ระบบไฟล์ที่ใช้คืออุปกรณ์เก็บข้อมูลระยะไกลที่ต่อกับเครือข่าย

โปรดทราบว่าสิ่งที่ทำสำเนาของคุณอยู่บนที่เก็บข้อมูลบนเครือข่าย ดังนั้นมันจึงอาจเป็นอะไรก็ได้บนระบบระยะไกลหรือเครือข่ายที่อยู่ระหว่างนั้น ประสิทธิภาพการจัดเก็บข้อมูลระยะไกล ความเร็วของเครือข่าย (อาจเป็น IP) และการใช้งาน หรืออาจเป็นแบบโลคัลของ VM นี้ ซึ่งผู้เยี่ยมชมกำลังแข่งขันกันเพื่อแย่งชิงทรัพยากรกับทุกอย่างที่ทำงานบนโครงสร้างพื้นฐานของคุณ

เป็นไปได้เสมอที่จะเจาะลึกลงไปถึงวิธีการทำงานที่เก็บข้อมูลเครือข่าย (NFS?) มีความสำคัญหรือไม่หรือคุณเห็นสิ่งนี้ในดิสก์ในเครื่องด้วย เวลา CPU ของผู้ใช้ 0.7 วินาทีนั้นค่อนข้างใช้งานได้จริง คิดเป็นเท่าใดในการจัดการกับการเรียกระบบจำนวนมาก CPU ไม่ว่างจริง ๆ แล้วหมายความว่าอย่างไรเมื่อสิ่งนี้ส่วนใหญ่รอหน่วยความจำช้าและที่เก็บข้อมูลช้ามาก คำถามที่ตอบไม่ง่ายนัก แต่อาจไม่จำเป็นต้องเจาะลึกเกินไปเมื่อสิ่งนั้นมีประสิทธิภาพเพียงพอ

Orion Red avatar
in flag
"ฉันถือว่าไฟล์ยังคงแคชอยู่ใน RAM จากเวลาที่อ่านครั้งล่าสุด" - สิ่งนี้สมเหตุสมผลอย่างยิ่งเมื่อฉันนั่งดูสถานการณ์โดยรวมนอกจากนี้ยังอาจนำฉันไปสู่วิธีการแก้ไขข้อผิดพลาดนี้ในเวลาดำเนินการ เป็นเรื่องหมูในสถานการณ์หลามที่เราได้รับไฟล์ขนาดใหญ่ 16GB เข้ารหัส/บีบอัดเพื่อใช้ในภายหลัง จากนั้นถอดรหัส/ขยายเมื่อจำเป็น จากนั้นเรียงลำดับ ไฟล์ที่เกี่ยวข้องอื่นๆ มีขนาดน้อยกว่า 800 MB ดังนั้นฉันจึงอาจสามารถทำตามขั้นตอนเหล่านั้นแบบย้อนกลับและไม่ต้องดำเนินการหลายอย่าง
Orion Red avatar
in flag
คุณต้องการที่จะได้รับเครดิตอย่างไรเมื่อฉันทำห่วงโซ่นี้?
John Mahowald avatar
cn flag
บางทีการถอดรหัสและการประมวลผลอาจเกิดขึ้นได้ในไพพ์ ถ้าสามารถเข้าถึงสตรีมได้ แต่อาจไม่ใช่ หรือโยนหน่วยความจำและที่เก็บข้อมูลอย่างรวดเร็วไปที่ปัญหา สำหรับการระบุแหล่งที่มา ชื่อของฉันและลิงก์ไปยังสิ่งนี้ เป็นเรื่องปกติสำหรับใบอนุญาต CC BY-SA สำหรับเนื้อหา Stack Exchange ทั้งหมด https://stackoverflow.com/help/licensing บางทีคุณอาจไม่ได้รับโอกาสในการปรับเปลี่ยนและแบ่งปัน แต่ ถ้าบอกว่าคุณเคยเขียนบล็อกโพสต์เกี่ยวกับวิศวกรรมเกี่ยวกับการตีความคำสั่งเวลาต่ำต้อย ใบอนุญาตจะต้องมีการแสดงที่มา

โพสต์คำตอบ

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