[IRC-DEV] nicklen >9

Jesus Cea Avion jcea at argo.es
Thu Jul 10 22:24:57 CEST 2003


> seria hora de adaptar la red al futuro ampliando el nicklen y asi
> dando nuevas posiblidades de registro de nicks ?

Veamos cómo están las cosas hoy. La distribución de nicks registrados (y
en "forbid") en "nick2" sigue así:

[0, 30, 415, 3055, 8923, 19683, 28854, 32870, 34050, 40024]

El primer valor son los nicks de tamaño 0, obviamente ninguno. El último
valor son los nicks de tamaño 9.

Visto ese gráfico, sí parece interesante incrementar el tamaño máximo
permitido de los nicks. Quedan por determinar un par de cosas:

a) ¿Qué nuevo tamaño se va a fijar como límite?.

b) ¿Los "services" y "bots" actuales soportarían nicks de, por ejemplo,
16 caracteres?. En lo que a Olimpo y familia corresponde, no habría
problema, pero no sé nada sobre los demás bots.

c) ¿El incremento en disco y memoria de tener nicks más largos sería un
problema "apreciable"?. A nivel de IRC, un proyecto interesante sería un
"slab allocator" para lo que son los nicks en sí.

Si se decide ampliar, es necesario realizar una actualización "en dos
pasos". En el primer paso todos los nodos siguen permitiendo a sus
usuarios locales ponerse nicks SOLO de longitud 9, pero admiten usuario
remotos con tamaños mayores. Cuando toda la red esté actualizada a esa
versión, se distribuye otra versión que permite tamaños locales
"mayores".

Si tiramos por el "slab allocator", que parece interesante, habría que
considerar poner un límite a los usuarios locales, pero permitir
longitudes "ilimitadas" a los usuarios remotos. De esa forma el futuro
es más simple.

¿Comentarios?.

PS: Ahora mismo todos los usuarios suponen un coste fijo de 10 bytes
para el nick, independientemente de su longitud. Con 40.000 usuarios, no
salen 400.000 bytes usados para almacenar los nicks.

Si se pasa a un "slab allocator", el coste fijo se reduciría a 5 bytes
(uno por el puntero y otro por el final de cadena) más el tamaño real
del nick.

Suponiendo que los 40.000 usuarios conectados siguiesen un esquema
similar a la distribución de nicks registrados, tendríamos que
aproximadamente:

7*1+99*2+727*3+2124*4+4686*5+6870*6+7826*7+8107*8+9529*9=280931

280931+40000*5=480931 bytes

Estaríamos gastando un 20% de la memoria. La ventaja es que a medida que
el tamaño máximo de nick crece, llega un punto donde se empieza a
"ganar". Sospecho que ese punto es un incremento pequeño en el tamaño

Supongamos ampliar el tamaño del nick a 12 caracteres.

Actualmente gastaríamos 13*40000 = 520000 bytes

Usando un "slab", y suponiendo que el gráfico de uso de longitudes es
simétrico respecto a 9, tendríamos:

7*1+99*2+727*3+2124*4+4686*5+6870*6+7826*7+8107*8+9529*9+8107*10+7826*11+6870*12
= 530527

En total gastaríamos 530527+40000*5 = 730527

Sale un resultado peor. Uhmmm, hay que echar cuentas :-p

-- 
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea at argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
                                      _/_/    _/_/          _/_/_/_/_/
PGP Key Available at KeyServ   _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz




More information about the IRC-Dev mailing list