อะไรคือความแตกต่างระหว่างการทำมัลติเพล็กซ์โดยใช้ tmux / หน้าจอและแท็บเปิดในเทอร์มินัลอีมูเลเตอร์?


1

ฉันพยายามเปรียบเทียบสองวิธีนี้ในการรันเชลล์ / กระบวนการหลายตัวโดยการวัดหน่วยความจำและการใช้ cpu ผ่าน htop

ใครสามารถอธิบายความแตกต่างในวิธีการทำงานของแต่ละวิธีหรือถ้ามี

แก้ไข:

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

ฉันยังไม่ได้พิจารณาว่าจะมีประโยชน์ด้านประสิทธิภาพของอีกวิธีหนึ่งหรือไม่ หรือกลไกพื้นฐานที่เกี่ยวข้อง

ในระหว่างนี้คุณสามารถมีส่วนร่วมในรายละเอียดเพิ่มเติมเกี่ยวกับหัวข้อนี้!

ลิงก์ด้านล่างช่วยให้ฉันเข้าใจความแตกต่างพื้นฐาน:

ความสัมพันธ์ระหว่างมัลติเพล็กเซอร์กับเทอร์มินัลคืออะไร?

ประโยชน์ของการใช้เทอร์มินัลมัลติเพล็กเซอร์คืออะไร

คำตอบ:


2

ความแตกต่างที่ใหญ่ที่สุดคือคุณสามารถแนบหน้าจอหรือเซสชัน tmux ของคุณจากเทอร์มินัลอื่น (ไม่ว่าจะเป็นเทอร์มินัลอีมูเลเตอร์, VT's, เซสชัน SSH หรือแม้แต่เทอร์มินัลอนุกรมจริง) แต่ไม่สามารถทำได้ด้วยแท็บ สิ่งนี้อาจฟังดูง่าย แต่เป็นข้อได้เปรียบที่ใหญ่ที่สุดข้อหนึ่งของการใช้หน้าจอหรือ tmux โดยเฉพาะอย่างยิ่งหากคุณกำลังติดต่อกับระบบระยะไกล: มันสามารถใช้งานได้เกินกว่าระยะเวลาของเซสชันการเข้าสู่ระบบปัจจุบันของคุณ จำนวนเหตุผล

มีความแตกต่างอื่น ๆ สองสามอย่าง:

  • การใช้หน้าจอหรือ tmux หมายความว่าคุณจะมีกระบวนการพิเศษหนึ่งรายการต่อหนึ่งหน้าจอหรือเซสชัน tmux เสมอ (แต่ไม่ใช่ต่อหน้าต่าง / แท็บ) ขึ้นอยู่กับเทอร์มินัลอีมูเลเตอร์ที่คุณใช้คุณอาจไม่มีกระบวนการพิเศษหรือคุณอาจมีมากกว่าหนึ่งเครื่อง
  • การใช้หน้าจอหรือ tmux ช่วยให้คุณมีฟังก์ชั่นพิเศษบางอย่างที่ตัวเลียนแบบเทอร์มินัลส่วนใหญ่ทำไม่ได้เช่นหน้าต่างแยกและความสามารถในการส่ง BREAK ในแอปพลิเคชันในแท็บ
  • ปุ่มลัดที่ใช้ในการสลับหน้าต่าง / แท็บต่างกัน (แม้ว่าโดยทั่วไปจะสามารถกำหนดค่าใหม่ได้อย่างง่ายดาย
  • คุณสามารถใช้หน้าจอและ tmux จากเทอร์มินัลเซสชันใด ๆ แต่สามารถใช้แท็บได้เมื่อใช้เทอร์มินัลอีมูเลเตอร์
  • หน้าจอ (และอาจเป็น tmux) มีคุณสมบัติการล็อคเทอร์มินัล โดยพื้นฐานแล้วมันเทียบเท่ากับการล็อกหน้าจอที่คุณเห็นในเดสก์ท็อปส่วนใหญ่

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

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


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

1
@abdelmak ใช่ แต่มันก็มีแอปพลิเคชั่นที่ใช้งานได้จริง รายการใหญ่หนึ่งรายการกำลังโยกย้ายเซสชัน (เช่นเริ่มจากเซสชันท้องถิ่นจากนั้นสลับเป็นเซสชันระยะไกลในภายหลังหรือย้อนกลับ)
Austin Hemmelgarn

1

ซอฟต์แวร์ทั้งสองชนิดนั้นใช้ pseudo-ttys ชนิดเดียวกันจริง ๆ และทั้งสองก็เริ่มต้นสภาพแวดล้อมในลักษณะเดียวกัน

ข้อแตกต่างที่สำคัญคือมัลติเพล็กเซอร์ทำหน้าที่เหมือน 'พร็อกซี' - พวกมันทำหน้าที่เป็นเทอร์มินัลอีมูเลเตอร์ไปยังโปรแกรมด้านใน แต่เป็นโปรแกรมปกติ (ไคลเอนต์) ไปยังเทอร์มินัล

ซึ่งหมายความว่าอักขระแต่ละตัวหรือรหัสควบคุมถูกตีความสองครั้งเมื่อผ่านเลเยอร์ ทั้ง tmux และ gnome-terminal รักษาสถานะของตัวเอง พวกเขามีความคิดของตัวเองว่าบัฟเฟอร์หน้าจอควรมีลักษณะเป็นอย่างไร (และบางครั้งอาจหลุดจากการซิงค์)

นอกจากนี้ยังหมายถึงความต้องการ RAM สองเท่าสำหรับบัฟเฟอร์หลัก & สำรอง Scrollback อาจทำซ้ำเช่นกัน แต่แทบจะไม่ (เทอร์มินัลด้านนอกไม่อัพเดต scrollback เนื่องจาก tmux เปลี่ยนเป็น 'Alternate buffer')


การทำสำเนาอักขระและรหัสควบคุมมีเหตุผล แต่ความต้องการ RAM สองเท่านั้นขัดแย้งกับการเรียกร้องของ @ Austin ว่าไม่มีความแตกต่างในการใช้ทรัพยากรระบบ
abdelmak

ปกติจะไม่มีความแตกต่างที่สังเกตได้เว้นแต่คุณกำลังพยายามใช้เทอร์มินัล 10,000x10000 เซลล์ ยังมัลติเพล็กเซอร์เก็บบัฟเฟอร์ของตัวเอง (นั่นคือวิธีที่คุณสามารถแยกออกและใส่กลับเข้าไปใหม่และยังได้รับมุมมองเดียวกัน) และบัฟเฟอร์นั้นจะต้องเก็บไว้ที่ไหนสักแห่งใช้พื้นที่แรมมาก การประมวลผลทั้งหมดจะต้องใช้เวลา CPU ด้วย
grawity

1
@grawity และบ่อยครั้งที่คุณคิดว่ามันเป็นเรื่องสำคัญ? ขนาดทั่วไปของหน้าต่างเทอร์มินัลที่ 1920x1080 พร้อมตัวอักษร 12 จุดแปลเป็นพื้นที่ขนาดประมาณ 30kb ที่จำเป็นสำหรับเต็มหน้าจอ (สมมติว่าแต่ละเซลล์ถูกเก็บเป็นบิตฟิลด์ที่บรรจุในจำนวนเต็ม 32 บิตซึ่งสมเหตุสมผลในกรณีส่วนใหญ่) และเวลา CPU ในการประมวลผลการอัปเดตสำหรับ iis นั้นตามลำดับไมโครวินาทีส่วนใหญ่สำหรับเทอร์มินัลอีมูเลเตอร์ส่วนใหญ่ (และแม้แต่น้อยกว่าสำหรับมัลติเพล็กเซอร์เนื่องจากพวกเขาไม่จำเป็นต้องทำการเรียก GUI ที่เกี่ยวข้อง
Austin Hemmelgarn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.