PerfUG #11 : Network Quizz



PerfUG #11 : Network Quizz

0 0


perfug-11-quizz

PerfUG #11 : Birthday / Quizz

On Github perfug / perfug-11-quizz

PerfUG #11 : Network Quizz

Raphael Luta

Question 0

What is this ?

Question 1

Quel bénéfice moyen représente pour un Hedge Fund une diminution de latence de 1ms entre Londres et New York ?

  • $10 M
  • $100 M
  • $1 B
  • $10 B

Réponse 1

  • $100 M
  • Financement du Hibernian Express à hauteur de 300 M$
  • Tarif d’interconnexion 50x plus cher que câble actuel
  • Livraison prévue fin 2014-début 2015

Question 2

Comment est-ce possible de faire 22,5 Moctets de transfert par seconde sur une interface à 100 Mb/s ?

Conf. 1/3

                        $ ethtool eth0
                        Settings for eth0:
                        Speed: 100Mb/s
                        Duplex: Full
                    

Conf. 2/3

$ ifconfig eth0
Eth0 	Link encap:Ethernet  HWaddr 4c:72:b9:67:21:75
inet addr:5.135.179.200  Bcast:5.135.179.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Conf. 3/3

$ ab -n 1000 -c 1 http://5.135.179.200:8000/
Benchmarking 5.135.179.200 (be patient)
Document Path:          /
Document Length:        42012 bytes
Concurrency Level:      1
Time taken for tests:   18.349 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      422860000 bytes
HTML transferred:       420120000 bytes
Requests per second:    544.98 [#/sec] (mean)
Time per request:       1.835 [ms] (mean)
Time per request:       1.835 [ms] (mean, across all concurrent requests)Transfer rate:          22504.84 [Kbytes/sec] received

Réponse 2

Ethernet bypass sous Linux Comportement comme interface lo mais différente
  • Ne réagit pas aux paramètres lo
  • Ne réagit pas aux paramètres eth0
Exemple possible sur shaping, etc… Sous Mac OS X, comportement différent :
$ netstat -rn
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.254      UGSc           18        0     en1
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              6   502225     lo0
192.168.1          link#5             UCS             6        0     en1
192.168.1.101      127.0.0.1          UHS             0        0     lo0

Question 3

Je veux envoyer un fichier DivX (600 Mo) à un ami qui habite à 1000 m. Quel est le moyen d’envoi le plus rapide ?

  • ADSL2
  • 4G
  • clé USB

Réponse 3

ADSL -> upload = 768 kbps
  • Transfert au mieux : 1h50
4G -> upload moyen 8 Mbps
  • Transfert au mieux : 11mn
USB -> écriture 5 MBps, lecture 7 MBps,Marche 6 km/h, Bandwith infinie
  • Transfert au mieux : 120s + 10mn + 90s = 14mn

Réponse 3 bis

Question 4

Le proxy TCP ci-dessous fonctionne mais les performances sont catastrophiques. Comment l’améliorer ?

def srvDst = args[0],b
def bufferSize = 128 * 1024  // 128 kB

def server = new ServerSocket(4444)
server.setReceiveBufferSize(bufferSize)

while(true) {
    server.accept { socket ->
        socket.setTcpNoDelay(true)
        def client = new Socket(srvDst,8080)
        client.setTcpNoDelay(true)
        client.setSendBufferSize(bufferSize)
        socket.withStreams { sinput, soutput ->
            client.withStreams { cinput, coutput ->
                while ((b = sinput.read()) >= 0) coutput.write(b)
            }
        }
        client.close()
    }
}
            

Réponse 4

  • Réactiver Nagle
  • [ou] Buffer des écritures sur une taille ~ MSS
  • [et/ou]
  • Impact SENDBUF