Score:3

สถานะ Git ช้ามากในพีซีหนึ่งเครื่อง

ธง do

ฉันไม่แน่ใจว่านี่เป็นปัญหาของ Ubuntu หรือปัญหาคอมไพล์ ...

ฉันมีพีซีสองเครื่อง

  • หนึ่งคือ ubuntu VM (เรียกมันว่า VM PC)
  • อีกอันคือ Ubuntu PC (เรียกว่า Build PC)

ทั้งคู่ใช้ Ubuntu 18.04

ทั้งคู่ทำงานบนฮาร์ดแวร์เดียวกัน (เครื่องจริงต่างกัน แต่รุ่น hw เดียวกัน)

ฉันมีโครงสร้างซื้อคืนที่ใหญ่มาก แต่เมื่อฉันเรียกใช้ เวลา git submodule foreach --recursive git สถานะ ฉันได้รับเวลาที่แตกต่างกันอย่างมาก:

  • สร้างพีซี: ~40 วินาที
  • VM พีซี: ~9 วินาที

ถ้าฉันเพิ่งทำ สถานะคอมไพล์ ที่ระดับบนสุด ฉันได้รับ ~2s บน Build PC และ ~0.5s บน VM PC

ทั้งคู่ใช้งาน git เวอร์ชัน 2.17.1 เดียวกัน - ทำให้ Ubuntu สองตัวติดตั้งโดยใช้สคริปต์การติดตั้งเดียวกัน - ดังนั้นพวกมันจึงคล้ายกันมาก

ข้อแตกต่างที่สำคัญคือ Build PC มี 3 ฟิสิคัล 1 NVmem และ 2xSSDs:

  1. ระบบปฏิบัติการ 256GB (NVM)
  2. 1TB sw repos (repo ภายใต้การทดสอบอยู่ที่นี่)
  3. repos อื่น ๆ 1TB

ในขณะที่ VM นั้นทั้งหมดอยู่บน SSD หนึ่งตัวภายในดิสก์อิมเมจของกล่องไวรัส (ประมาณ 500GB)

ฉันไม่แน่ใจว่าจะเริ่มแก้ไขจุดบกพร่องนี้ได้ที่ไหน ดังนั้นฉันคิดว่าฉันจะเริ่มในฟอรัมนี้ :)

อัปเดต

ฉันลองสิ่งนี้บน OS SSD บน Build PC และยังคงได้ผลลัพธ์ที่ช้ากว่า .... ดังนั้นมันจึงไม่ใช่ปัญหากับ SSD ตัวที่ 2/3 หรือวิธีการติดตั้ง...

อัปเดต 2

บนเครื่องที่แตกต่างกันสองเครื่อง - พวกเขากำลังทดสอบกับ repo ที่เหมือนกัน (โคลนในลักษณะเดียวกันจากระยะไกลเดียวกัน) Build PC one เป็นโคลนที่ใหม่กว่า - แต่ฉันหวังว่าการดีบักการนับจะเหมือนกัน นี่คือผลลัพธ์ของ: git นับวัตถุ -v:

วีเอ็มพีซี

จำนวน: 281
ขนาด: 1184
ในแพ็ค: 1698
แพ็ค: 2
ขนาดแพ็ค: 112961
ลูกพรุนบรรจุได้: 0
ขยะ: 0
ขนาดขยะ: 0

สร้างพีซี

นับ: 0
ขนาด: 0
บรรจุในห่อ: 1972
แพ็ค: 1
ขนาดแพ็ค: 112994
ลูกพรุนบรรจุได้: 0
ขยะ: 0
ขนาดขยะ: 0

ค่าที่แตกต่างกันมาก... ฉันไม่แน่ใจว่ามันหมายถึงอะไร ดังนั้นฉันจึงลบและทำซ้ำ repo ของ VM PC เพื่อดูว่าการโคลนใหม่สร้างความแตกต่างหรือไม่ นี่คือค่าเหล่านั้น:

นับ: 0
ขนาด: 0
บรรจุในห่อ: 1972
แพ็ค: 1
ขนาดแพ็ค: 112994
ลูกพรุนบรรจุได้: 0
ขยะ: 0
ขนาดขยะ: 0

ฉันวิ่งอีกครั้ง สถานะคอมไพล์ ทดสอบและได้ผลลัพธ์ที่เหมือนกันทุกประการ โดยที่ VM PC เร็วกว่ามาก

ปรับปรุง 3

วิ่งแปลกจริงๆ: เวลา GIT_TRACE_PERFORMANCE=1 git st บน Build PC พิมพ์การดีบักจำนวนมาก - แต่ทำงานเร็วเท่ากับ VM PC (< 1 วินาที) แต่ถ้าฉันเรียกใช้สิ่งอื่นจะใช้เวลานานกว่ามาก:

  • เวลา GIT_TRACE_PERFORMANCE=1 git st ~0.5 วินาที
  • เวลา GIT_TRACE_PERFORMANCE=1 git st 2> /dev/null ~2 วินาที
  • เวลาคอมไพล์เซนต์ ~2 วินาที
uz flag
Jos
โปรดเรียกใช้ `git count-objects -v` บน repos ทั้งสองและบอกเราว่าเทียบเคียงได้หรือไม่
code_fodder avatar
do flag
@jos ฉันทำการทดสอบเหล่านั้นและอัปเดตในคำอธิบายคำถามด้านบน ตัวเลขที่ออกมาแตกต่างกันแม้ว่าจะเป็น repo เดียวกันก็ตาม ดังนั้นฉันจึงลบและทำซ้ำ repo ของ VM PC (เพราะนั่นเป็นการโคลนแบบเก่า) จากนั้นจึงนำตัวเลขที่เหมือนกันแต่เวลาที่เหมือนกัน น่าแปลกที่ฉันสามารถให้ Build PC ทำงานได้อย่างรวดเร็วหากฉันใช้ `GIT_TRACE_PERFORMANCE` แต่จะไม่เป็นเช่นนั้นหากฉันกำหนดเอาต์พุตใหม่ไปที่ /dev/null ... แปลกมาก!

โพสต์คำตอบ

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