2 Linux ana bilgisayarı arasındaki gecikme nasıl giderilir


16

2 linux host arasındaki gecikme süresi yaklaşık 23 ms'dir. Bir anahtarla bağlanırlar. Ping ve Wireshark gecikme numarasını onaylar. Ancak, bu gecikmeye neden olan şey hakkında herhangi bir görünürlüğüm yok. Gecikmenin ana bilgisayar A veya B'deki NIC veya anahtar veya kablolardan kaynaklanıp kaynaklanmadığını nasıl anlayabilirim?

GÜNCELLEME: .23 ms gecikme, çok yüksek frekansta mesaj gönderen mevcut uygulamam için kötü ve .1ms'ye getirilip getirilemeyeceğini görmeye çalışıyorum


2
Neden .23ms kötü gecikme olduğunu düşünüyorsun? Bu harika bir gecikme.
SpacemanSpiff

6
Bunları doğrudan bir çapraz kablo ile bağlayın. Aynı gecikme süresine sahipseniz, nedeni ana bilgisayarlardan biridir. Aynı gecikme süreniz yoksa, neden anahtar veya kablodur.
joeqwerty

1
Anlaşıldı, sorun ne? Yan yana oturan iki makine ile 0.23 ms gecikme aldığımdan daha az.
Michael Hampton

@joeqwerty İki sistem çapraz kablo ile bağlanırsa, birbirlerini nasıl bulurlar? ARP hala çalışıyor mu? TCP hala çalışıyor mu?
Jimm

1
İkisi de aynı anahtara bağlıymış gibi çalışırlar. Kablo sadece iletişim kuracakları fiziksel ortamdır. OSI modelinin 7 katmanının tümü (veya isterseniz DARPA modelinin 4 katmanı) tam olarak şimdi olduğu gibi çalışacaktır.
joeqwerty

Yanıtlar:


15

Genel olarak, sistemler arasındaki ağ performansının, özellikle gecikme ve titremenin bir görünümünü elde etmek için iperf yardımcı programına yönelik gelişmiş anahtarlardan bazılarını kullanabilirsiniz ...

Bu bir UDP veya TCP tabanlı mesaj akışı mı?

Yukarıda kurulumunuz hakkında daha fazla bilgiye ihtiyaç duyulduğunu söyledim. Bu, düşük gecikmeli mesajlaşma uygulamasıysa, donanım, sürücü ve işletim sistemi ayarını kapsayan tüm bir ayarlama ve optimizasyon teknikleri dünyası vardır . Ama gerçekten, daha fazla bilgiye ihtiyacımız var.

Düzenle:

Tamam, bu TCP mesajý. Herhangi bir /etc/sysctl.confparametreyi değiştirdiniz mi? Gönderme / alma arabellekleriniz nasıl görünüyor? Tek başına gerçek zamanlı bir çekirdek kullanmak fazla bir şey yapmaz, ancak CPU'lara bağlandığınız noktaya hareket ederseniz, mesajlaşma uygulamasının gerçek zamanlı önceliğini değiştirmek ( chrt) ve muhtemelen tuned-admsistemin profilini değiştirmek yardımcı olabilir ...

Bu genel bir EL6 sistemi gibi görünüyor, bu nedenle bir performans ayarlama taban çizgisi oluşturmanın kolay bir yolu, sistemin performans profilini ayarlanan çerçeve içinde mevcut olan başka bir sistemle değiştirmeyi içerir . Sonra oradan inşa edin.

Senin durumunda:

yum install tuned tuned-utils
tuned-adm profile latency-performance

Farklılıkları gösteren hızlı bir matris:

Bize donanımdan bahseder misiniz? CPU, NIC, bellek türleri?

Yani, bağlantınızı test etmek ilginç olabilir ... Bu iperf testini deneyin ...

Tek bir sistemde, bir iperf UDP dinleyicisi başlatın. Diğer yandan, ilkine bir bağlantı açın ... Hızlı bir hat kalitesi testi.

# Server2
[root@server2 ~]# iperf -su   

# Server1
[root@server1 ~]# iperf -t 60 -u -c server2

Benim durumumda, düşük titreşim ve düşük ping süresi:

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-20.0 sec  2.50 MBytes  1.05 Mbits/sec   0.012 ms    0/ 1785 (0%)

PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms

Donanım ve arayüzlerde hata olup olmadığını kontrol ederim. İsterseniz, sistemler arasındaki anahtarı kaldırın ve doğrudan bağlantının nasıl göründüğüne bakın. Yüksek titreşim (sapma) istemezsiniz, bu yüzden kontrol edin.

Ama dürüst olmak gerekirse, mevcut kurulumunuza girdiğiniz ping zamanlarında bile, uygulamanızı öldürmek için yeterli olmamalıdır. Gönderme / alma arabelleklerinizi ayarlama yolunda ilerlerdim. Bkz: net.core.rmem_max, net.core.wmem_maxve bunların varsayılan ...

Aşağıdaki gibi bir şey /etc/sysctl.conf(lütfen zevkinize göre ayarlayın):

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

Gecikmeye duyarlı bir mesajlaşma uygulamasıdır. Tipik işletim sistemi çekirdek-2.6.32-279.11.1.el6.x86_64 olsa da, bunun herhangi bir fark yaratıp yaratmayacağını görmek için çekirdek 3.2.23-rt37.56.el6rt.x86_64 ana bilgisayarları yükledim. Ama hemen hemen aynıydı. Mesaj boyutları 1KB - 3KB arasında değişir. Tüm iletişim TCP üzerinden gerçekleşir.
Jimm

OS Red Hat MRG mı?
ewwhite

Şu anda sade Redhat 6.3, ancak MRG de bir olasılık. Yukarıda belirttiğim gibi, her ikisini de denedim, ama gecikme aynıydı. Ne tür ayarlayıcılarla ilgilenmeliyim?
Jimm

Donanım ve NIC kurulumunu bilmek istiyorum. Anahtar modeli yardımcı olur. Ayarlanabilirler için 6.3'e bakmanız gereken açık alan tuned-admprofilinizdir.
ewwhite

Çift Ethernet Denetleyicileri: Emulex Corporation OneConnect 10 Gb NIC (rev 02) ve her biri 2400 MHz olan 16 çekirdekli AMD Ailesi 10h İşlemci.
Jimm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.