พยายามทำสิ่งนี้ด้วยตนเองและคิดสิ่งนี้ขึ้นมา อาจมีวิธีที่ง่ายกว่า แต่นี่คือสิ่งที่ฉันมาด้วย
ก่อนอื่นให้เตรียมท่อที่จะใช้เพื่อให้โปรแกรมการเปรียบเทียบทำการสื่อสารผ่านการเชื่อมต่อ SSH
$ mkfifo /tmp/up /tmp/down
จากนั้นสร้างการเชื่อมต่อในโหมด ControlMaster โดยไม่ต้องดำเนินการคำสั่งระยะไกลใด ๆ สิ่งนี้ช่วยให้เราสามารถตรวจสอบกับโฮสต์แบบโต้ตอบ หลังจากสร้างการเชื่อมต่อแล้ว SSH จะ "หยุด" ที่นี่ในเบื้องหน้า
$ ssh $HOST -N -M -S /tmp/control
ในเทอร์มินัลแบบขนานให้เรียกใช้รีโมตcat
ในพื้นหลัง มันจะเป็นเซิร์ฟเวอร์ echo ของเราซึ่งเราจะทำการวัดความหน่วง อินพุตและเอาต์พุตเชื่อมต่อกับ FIFO:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
จากนั้นทำการเปรียบเทียบโปรแกรมขนาดเล็ก (ส่งไบต์ไปที่up
FIFO รับไบต์จากdown
FIFO):
$ python -m timeit -s 'import os' \
'os.write(3, "z"); z=os.read(4, 1); assert z=="z", "got %s" % z' \
3>/tmp/up 4</tmp/down
10 loops, best of 3: 24.6 msec per loop
การวัดแสดงให้เห็นอย่างชัดเจนว่าเวลาแฝงไปกลับ หากคุณต้องการทำการทดสอบซ้ำให้เรียกใช้สองคำสั่งสุดท้าย ( ssh
และpython
) อีกครั้ง
หากสิ่งที่ดูเหมือนจะผิดพลาดให้ใช้การ-v
ตั้งค่าสถานะSSH เพื่อรับการแก้ไขข้อบกพร่องเพิ่มเติม