O sistema de janelas X sofre de escalabilidade?

5

Um dos meus professores estava nos contando sobre problemas de escalabilidade, e disse que o protocolo X era um excelente exemplo de um protocolo não escalável. Por que é que? É porque é muito dependente de hardware? Eu sei que o X é usado em ambientes modernos unix / linux, se não é escalável do que por que é usado tão amplamente?

    
por SetSlapShot 17.09.2013 / 02:13

1 resposta

6

Um dos motivos pelos quais ele pode ter dito isso é que, se você observar o tráfego que flui entre um cliente e um servidor, ele será bastante detalhado. Isso não apresenta um problema quando o tráfego só precisa ir localmente em uma única caixa entre os 2, no entanto, quando o tráfego precisa passar por uma conexão de rede, fica mais óbvio que é um protocolo ineficiente.

O protocolo é tolerável em uma rede LAN, mas assim que você tentar estendê-lo por uma conexão WAN ou introduzir criptografia na forma de uma VPN ou usando uma conexão SSH como um link entre o cliente e o servidor , o protocolo realmente começa a mostrar a falta de escalabilidade.

Avaliação comparativa

Você pode usar a ferramenta x11perf para ter uma noção do impacto da execução dos aplicativos localhosted vs. executá-los em uma conexão SSH com outro sistema X.

Aqui estou executando o teste -create para dar a você uma amostra do que estou falando.

localhost

$ x11perf -create
x11perf - X11 performance program, version 1.2
Fedora Project server version 10905000 on :0.0
from grinchy
Mon Sep 16 21:08:28 2013

Sync time adjustment is 0.1340 msecs.

   2400 reps @   0.0134 msec ( 74400.0/sec): Create and map subwindows (4 kids)
   2400 reps @   0.0156 msec ( 64300.0/sec): Create and map subwindows (4 kids)
   ....
   2400 reps @   0.0119 msec ( 83800.0/sec): Create and map subwindows (100 kids)
  12000 trep @   0.0063 msec (158000.0/sec): Create and map subwindows (100 kids)
   ....
   2400 reps @   0.0029 msec (349000.0/sec): Create and map subwindows (200 kids)
  12000 trep @   0.0049 msec (205000.0/sec): Create and map subwindows (200 kids)

host da LAN

$ ssh skinner "x11perf -create"
....    
Sync time adjustment is 1.5461 msecs.

   2400 reps @   0.0270 msec ( 37100.0/sec): Create and map subwindows (4 kids)
   2400 reps @   0.0219 msec ( 45700.0/sec): Create and map subwindows (4 kids)
   ....
   2400 reps @   0.0168 msec ( 59600.0/sec): Create and map subwindows (100 kids)
  12000 trep @   0.0211 msec ( 47300.0/sec): Create and map subwindows (100 kids)
   ....
   2400 reps @   0.0159 msec ( 62900.0/sec): Create and map subwindows (200 kids)
  12000 trep @   0.0196 msec ( 50900.0/sec): Create and map subwindows (200 kids)

host WAN

$ ssh catbus-o "x11perf -create"
....
Mon Sep 16 21:12:22 2013

Sync time adjustment is 27.9911 msecs.

   2400 reps @   0.0592 msec ( 16900.0/sec): Create and map subwindows (4 kids)
   2400 reps @   0.0604 msec ( 16600.0/sec): Create and map subwindows (4 kids)
   ....
   2400 reps @   0.0538 msec ( 18600.0/sec): Create and map subwindows (100 kids)
  12000 trep @   0.0558 msec ( 17900.0/sec): Create and map subwindows (100 kids)
   ....
   2400 reps @   0.0697 msec ( 14400.0/sec): Create and map subwindows (200 kids)
  12000 trep @   0.0586 msec ( 17100.0/sec): Create and map subwindows (200 kids)

Observe a queda extrema de:

localhost:

  12000 trep @   0.0049 msec (205000.0/sec): Create and map subwindows (200 kids)

host da LAN:

  12000 trep @   0.0196 msec ( 50900.0/sec): Create and map subwindows (200 kids)

Host da WAN:

  12000 trep @   0.0586 msec ( 17100.0/sec): Create and map subwindows (200 kids)

Esse é um declínio acentuado no desempenho. Agora perceba que isso não é tudo culpa do X. Ele está passando por uma rede de 100MB no teste de LAN e uma conexão de ~ 20MB para o teste de WAN, mas o ponto ainda é o mesmo. O X não está se ajudando com as comunicações excessivamente robustas que está jogando para trás e para frente entre o servidor X e o cliente X.

Falha na comunicação (não resistiu à referência do Led Zeppelin)

Isso é mais para efeito, mas apenas para dar uma ideia da quantidade de dados que flui para trás e para frente durante o teste x11perf -create que usei acima. Decidi executá-lo novamente em meu host de rede local, só que desta vez Eu usei tcpdump para capturar o tráfego SSH e despejo em um arquivo.

Eu usei este comando:

$ sudo -i
$ tcpdump -lnni wlan0 -w dump.log -s 65535 host skinner and port ssh

O arquivo de log resultante:

$ ll dump.log 
-rw-r--r-- 1 root root 5768821 Sep 16 22:30 dump.log

Assim, a quantidade resultante de tráfego foi de aproximadamente 5,5MB. Concedido isso não é todo o tráfego X, mas dá uma idéia da quantidade de dados que flui. Este é realmente o calcanhar de Aquiles de X, e a principal razão pela qual ele não pode ser escalado.

    
por 17.09.2013 / 02:31

Tags