Đã cố gắng để làm điều này bản thân mình và đưa ra điều này. Có lẽ có một cách đơn giản hơn, nhưng đây là những gì tôi nghĩ ra.
Đầu tiên, chuẩn bị các đường ống sẽ được sử dụng để làm cho chương trình đo điểm chuẩn giao tiếp thông qua kết nối SSH.
$ mkfifo /tmp/up /tmp/down
Sau đó thiết lập kết nối trong chế độ ControlMaster mà không thực hiện bất kỳ lệnh từ xa nào. Điều này cho phép chúng tôi xác thực với máy chủ tương tác. Sau khi kết nối được thiết lập, SSH sẽ chỉ "treo" ở đây trong nền trước.
$ ssh $HOST -N -M -S /tmp/control
Trong một thiết bị đầu cuối song song, thực hiện từ xa cat
trong nền. Nó sẽ là máy chủ echo của chúng tôi có độ trễ mà chúng tôi sẽ đo. Đầu vào và đầu ra được kết nối với FIFO:
$ ssh $HOST -S /tmp/control cat </tmp/up >/tmp/down &
Và sau đó điểm chuẩn một chương trình nhỏ (gửi một byte đến up
FIFO, nhận một byte từ 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
Các biện pháp rõ ràng cho thấy độ trễ chuyến đi khứ hồi. Nếu bạn cần lặp lại thử nghiệm, hãy chạy lại hai lệnh cuối ( ssh
và python
).
Nếu có gì đó không ổn, hãy sử dụng -v
cờ SSH để có thêm đầu ra gỡ lỗi.