Menú principal

cpu_affinity_map

Publicado por firecold, Agosto 12, 2016, 02:10:06 PM

Tema anterior - Siguiente tema

firecold

cpu_affinity_map

Que tal amigos de Alterserv, antes que nada me disculpo por mi inactividad, pero ya estamos arrancando y probando cosas nuevas, como tambien haciendoselas saber, en esta ocasion les platicar de cpu_affinity_map que es? y como se implementa.

Como antes ya les habia hablado de SMP el cual nos ayuda a crear mas de un proceso de squid, ya que anteriormente solo se podia crear un solo proceso de Squid lo cual muchas veces provocaba un cuello de botella y al final para mitigar esto teníamos que hacer mucha configuración en squid como tambien, modificaciones en el sistema para optimizar la memoria y permitir un trabajo constante en squid.

Si leyeron el enlace se daran cuenta que esta opcion todavia estaba incompleta y muchas veces no funcionaba del todo o en algunos casos necesitabas un archivo de configuracion por cada instancia de squid, lo cual tambien era engorroso, ahora con las nuevas actualizaciones, en mi caso squid3.5.12 esta funcionando sin problemas con un solo archivo de configuracion por las instancias que vallas a utilizar.

Para esto lo primero que debes de saber es que esto depende de cuantos nucleos tenga tu procesador, si tu procesador solo tiene 2 nucleos solo puedes levantar 2 instancias nada mas, lo explico desde el principio para que no digan despues que no lo adverti, la configuracion es asi:

workers 4
cpu_affinity_map process_numbers=1 cores=1
cpu_affinity_map process_numbers=2 cores=2
cpu_affinity_map process_numbers=3 cores=3
cpu_affinity_map process_numbers=4 cores=4
cache_dir aufs /var/spool/squid/${process_number} 10000 16 256 min-size=1 max-size=838860800


En este caso primero activas workers diciéndole que levantaras cuatro instancias, con esto empiezas con cpu_affinity_map dandole un numero de proceso y asignándole en que núcleo trabajara, en mi caso tengo cuatro nucleos asigno cuatro nucleos y para que nuestro almacenamiento también se cree para cada núcleo.

Asignandole tambien un tamaño minimo de entrada en el cache y y un maximo tamaño de archivo. Acompañado con parametros que siempre relacionados con la canalizacion del cache.

cache_mem 2048 MB
maximum_object_size 800 MB
maximum_object_size_in_memory 50 MB
cache_swap_low 95
cache_swap_high 99


Reiniciamos servicios y revisamos nuestro cache.log y veremos cuatro instancias separadas por kid1, kid2, etc, Espero les guste, Saludos

Maravento

hola. Que bueno que regresastes y veo que con muy buenos aportes.
Solo un par de cosas que no tengo muy claro.
¿Qué sucede si hay 4 núcleos pero solo quiero implementar tres, dos o una instancia?
Lo otro es los valores que le asignas a:
cache_mem 32 KB
maximum_object_size_in_memory 32 KB
cache_swap_low 90
cache_swap_high 95
Concretamente la pregunta es por qué tan pequeños estos valores? (cache_mem se ajusta de acuerdo a la cantidad de RAM del sistema. Por ejemplo aprox 5MB de RAM por cada 1GB asignado a cache_dir o , por ejemplo, si el sistema tiene 8 GB de RAM (8192 MB) = 1024 MB de asignación de cache_mem
cache_mem 32 KB
Este valor si es a criterio de cada cual, pero es muy pequeño (por default es 1024 KB)
maximum_object_size_in_memory 32 KB
Para el caso de cache_swap_high y low dependen mas que todo de la capacidad del disco (para vaciar la cache). Por ejemplo el 1% de 100GB. Algunos recomiendan los siguientes valores (aunque no está claro por qué lo recomiendan):
cache_swap_low 95
cache_swap_high 99
Por último quisiera que me aclares el valor 1008  en cache_dir

Gracias por el gran aporte


firecold

Cita de: Maravento en Agosto 17, 2016, 09:44:41 AM
hola. Que bueno que regresastes y veo que con muy buenos aportes.
Solo un par de cosas que no tengo muy claro.
¿Qué sucede si hay 4 núcleos pero solo quiero implementar tres, dos o una instancia?
Lo otro es los valores que le asignas a:
cache_mem 32 KB
maximum_object_size_in_memory 32 KB
cache_swap_low 90
cache_swap_high 95
Concretamente la pregunta es por qué tan pequeños estos valores? (cache_mem se ajusta de acuerdo a la cantidad de RAM del sistema. Por ejemplo aprox 5MB de RAM por cada 1GB asignado a cache_dir o , por ejemplo, si el sistema tiene 8 GB de RAM (8192 MB) = 1024 MB de asignación de cache_mem
cache_mem 32 KB
Este valor si es a criterio de cada cual, pero es muy pequeño (por default es 1024 KB)
maximum_object_size_in_memory 32 KB
Para el caso de cache_swap_high y low dependen mas que todo de la capacidad del disco (para vaciar la cache). Por ejemplo el 1% de 100GB. Algunos recomiendan los siguientes valores (aunque no está claro por qué lo recomiendan):
cache_swap_low 95
cache_swap_high 99
Por último quisiera que me aclares el valor 1008  en cache_dir

Gracias por el gran aporte

Respondiendo a tus preguntas en respectivo orden:

Puedes crear instancias de acuerdo a cuantos nucleos tengas, pero eso no te limita a solo usar dos instancias, si quieres puedes usar 2 o tres instancias aunque tengas ocho nucleos, lo unico que haces es declarar las instancias y en que núcleo sera ejecutado.

Con los parametros relacionados al cache, los puse unicamente de referencia, ya que cada persona muchas veces le agrega valores diferentes, de acuerdo a sus necesidades.

Igualmente en cache_dir el tamaño del cache lo puse como referencia, ya que cada uno le agrega lo que tiene disponible de HDD para el cache, Saludos

PD: lo modificare para que quede claro, ya que me dejastes ver que no hice ver estas cuestiones, Gracias Amigo.

Maravento

Perfecto. Gracias nuevamente.
Realmente nunca le había puesto atención a esto, hasta que leí este post. Y es poca la información específica al respecto. Entiendo que esto de las instancias actúa como una especie de "balanceo de carga de squid" (tratando de encontrarle una símil).
Por eso me gustaría que detallaras el beneficio de tener varias instancias corriendo (versus no tenerlas) y los efectos (positivos o negativos) que causa en un servidor en producción, para comprender mejor sus bondades. Te agradezco mucho

crows86

tenia una duda con una version de squid 3.3.8 crees que pueda ponerse inestable? se encuentra en ubuntu 14.04.1 LTS actualmente cuenta con 4 core asignados

firecold

No para nada, yo lo uso igual con cuatro nucleos sin ningun problema, Saludos

crows86

Firecold tenia una duda, en el post de http://www.alterserv.com/foros/index.php?topic=925.msg6652#msg6652  mencionas que los workers solo funciona con la funcion rock y no con aufs, actualmente cuento con la version de squid 3.3.8 configurandolo de la manera que indicas sin embargo me genera un error de cache en la ruta /var/spool/squid3 limpie la carpeta las volvi a crear con squid3 -z pareciera que els ervicio sube pero al realizar un service squid3 status esta detenido

en la version 3.3.8 hasta que punto lograste avanzar?

firecold

Cita de: crows86 en Enero 04, 2017, 07:08:05 PM
Firecold tenia una duda, en el post de http://www.alterserv.com/foros/index.php?topic=925.msg6652#msg6652  mencionas que los workers solo funciona con la funcion rock y no con aufs, actualmente cuento con la version de squid 3.3.8 configurandolo de la manera que indicas sin embargo me genera un error de cache en la ruta /var/spool/squid3 limpie la carpeta las volvi a crear con squid3 -z pareciera que els ervicio sube pero al realizar un service squid3 status esta detenido

en la version 3.3.8 hasta que punto lograste avanzar?


ASi es amigo anteriormente solo funcionaba con Rock, pero ahora con las nuevas versiones y mejoras, ya puedes hacer uso de el, con respecto a tu problema, puedes enviarnos una captura de pantalla de el error que te envia squid, Saludos

crows86

Gracias Firecold 

iniciando no se por que arroja este mensaje WARNING: 'cpu_affinity_map' has non-existing process number(s)
y al configurar al pie de la letra segun el foro me arroja el siguiente error 

2017/01/09 13:54:50| ERROR: /var/spool/squid3/0: (2) No such file or directory
FATAL:  Failed to verify one of the swap directories, Check cache.log
        for details.  Run 'squid -z' to create swap directories
        if needed, or if running Squid for the first time.


aqui es cuando realizo el paso de limpiar la cache y volverla a crear pero el servicio queda abajo.

firecold

Cita de: crows86 en Enero 09, 2017, 02:02:00 PM
Gracias Firecold

iniciando no se por que arroja este mensaje WARNING: 'cpu_affinity_map' has non-existing process number(s)
y al configurar al pie de la letra segun el foro me arroja el siguiente error

2017/01/09 13:54:50| ERROR: /var/spool/squid3/0: (2) No such file or directory
FATAL:  Failed to verify one of the swap directories, Check cache.log
       for details.  Run 'squid -z' to create swap directories
       if needed, or if running Squid for the first time.


aqui es cuando realizo el paso de limpiar la cache y volverla a crear pero el servicio queda abajo.


Nos posteas tu configuracion de Squid, Saludos

crows86

Perdón amigo estuve algo retirado esta es mi configuración lo levante indicando la cache para proceso sin embargo veo que efectivamente cachea por cada uno pero no conozco una forma de saber si efectivamente anda smp

el mensaje de warning aun aparece en log de cache al re configurar pero no afecta el servicio 

auth_param basic program /usr/lib/squid3/basic_ldap_auth -R -b "dc=mydominio,dc=.co" -D "proxyusuario@mydominio.co" -w "clave2017" -f sAMAccountName=%s -h 192.168.0.12
auth_param basic children 300
auth_param basic realm Internet Proxy
auth_param basic credentialsttl 180 minute
external_acl_type ldap_users %LOGIN /usr/lib/squid3/ext_ldap_group_acl -R -b "dc=mydominio,dc=co" -D "proxyusuario@mydominio.co" -w "clave2017" -f"(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,OU=Grupos Navegacion,OU=Operacion,DC=mydominio,DC=co))" -h 192.168.0.12
acl poderes src 192.168.0.76 192.168.0.13 192.168.0.28
#regla de AD
acl g_regla1 external ldap_users g_regla1
acl g_regla2 external ldap_users g_regla2
# Lista de Dominios
acl url_g_regla1 dstdomain "/etc/squid3/sitios/url_g_regla1.acl"
acl url_g_regla2 dstdomain "/etc/squid3/sitios/url_g_regla2.acl"
acl restringidas dstdomain "/etc/squid3/sitios/restringidas.acl"
# SUMINISTRADOS POR SQUIDGUARD
#acl pornosotros  dstdomain "/var/lib/squidguard/db/porn/domains"
#acl viruliento dstdomain "/var/lib/squidguard/db/virusinfected/domains"
#  COMODIN
#acl comodin url_regex \.flv$ \.wmv$ \.mpeg$ \.rar$ \.3gp$ \.zip$ \.mpg$ \.avi$ \.mp4$ \.mp3$ \.rmvp$ \.torrent$ \.iso$ \.ngr$
#acl comodin2 url_regex \.bat$ \.msi$ \.exe$
# HORARIOS DE NAVEGACION
#acl dia time MTWHF 07:00-12:30
#acl noche time MTWHF 14:00-19:00
#  USUARIO ARRANCARA
#cache_effective_user proxy
#cache_effective_group proxy
#  NO CACHE  
#acl nocache dstdomain .google.com .akamaihd.net .verisign.com .comodoca.com
#no_cache deny nocache
acl SSL_ports port 443 5000 18080 18081 18082 18083 18084 18085 18086 18087 18088 18089 18090 444 8880
acl Safe_ports port 5000 # http
acl Safe_ports port 8888 # http
acl Safe_ports port 8080 # http
acl Safe_ports port 38080 # http
acl Safe_ports port 444 # http
acl Safe_ports port 75          # http
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 18152       # http
acl Safe_ports port 587         # smtp
acl CONNECT method CONNECT
#dns_nameservers isp
#tcp_outgoing_address isp
http_access allow poderes
http_access allow g_regla1 url_g_regla1
http_access allow g_g_regla2 url_g_regla2
http_access allow g_regla2 !restringidas
#Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access deny all
htcp_access deny all
#reply_body_max_size 30 MB g_nousada
#reply_body_max_size 600 MB g_nousada
http_port 3138
# no cache
hierarchy_stoplist cgi-bin ? google.com.co akamaihd.net verisign.com comodoca.com gmail.com
# RAM  
cache_mem 2 GB
## Maximo tamaño de archivo en cache de memoria
maximum_object_size_in_memory 50 MB
# Procesadores
workers 4
#cache  disco
cpu_affinity_map process_numbers=1,2,3,4 cores=1,2,3,4
cache_dir aufs /var/spool/squid3/1 2500 16 256 max-size=838860800
cache_dir aufs /var/spool/squid3/2 2500 16 256 max-size=838860800
cache_dir aufs /var/spool/squid3/3 2500 16 256 max-size=838860800
cache_dir aufs /var/spool/squid3/4 2500 16 256 max-size=838860800
minimum_object_size 0 KB
maximum_object_size 100000 KB
# objetos recientes y pequeños
cache_replacement_policy heap LFUDA
memory_replacement_policy heap LFUDA
#limpieza
cache_swap_low 92
cache_swap_high 99
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt %lp %>a %la %ul %ui %tl
# logs
access_log stdio:/var/log/squid3/access.log squid
logfile_rotate 40
# Estandar de actualización de cache 1 mes = 10080 mins, 1 dia = 1440 mins
refresh_pattern -i .(avi|iso|wav|mid|mp?|mpe?g?|mpeg|mov|3gp|wm?|flv|x-flv|axd)$ 14400 80% 43200
refresh_pattern -i .(qtm?|viv|au|ram?|snd|sit|hqx|arj|lzh|lha|txt|rtf|tex|latex|class|js|ico)$ 14400 80% 43200
refresh_pattern -i \.a[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.r[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.css$ 10 20% 4320
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern (cgi-bin|\?)    0       0%      0
refresh_pattern .               0       20%     4320
#nombre para mostrar
visible_hostname navegar.mydomiio.co
#Pool
delay_pools 3      # 3
delay_class 1 2    # pool 1 class 2 or 1
delay_class 2 2    # pool 2 class 2
delay_class 3 2    # pool 3 class 2
# ancho de banda
delay_parameters 1 400000/500000 40000/50000
delay_parameters 2 400000/500000 40000/50000
delay_parameters 3 400000/500000 40000/50000
#delay_parameters 3 400000/500000 40000/50000
#delay_parameters 4 400000/500000 40000/50000
#delay_parameters 5 400000/500000 40000/50000
#Relacionar
delay_access 1 allow g_regla1
delay_access 1 deny all
delay_access 2 allow g_regla2
delay_access 2 deny all
delay_access 3 allow poderes
delay_access 3 deny all
#
delay_initial_bucket_level 50
icp_port 3129
##  RAM
memory_pools off
memory_pools_limit 758 MB
#peticiones TCP
half_closed_clients off
#
coredump_dir /var/spool/squid3
#resolucion
dns_v4_first on
#
forward_max_tries 40
#cache_mgr
reload_into_ims on
#




Hasta el momento funciona bien.  si tienen cualquier sugerencia  de la configuración bienvenida sea, Gracias

firecold

Lo que hace basicamente es balancear la carga en cada nucleo de tu procesador, para no crear cuellos de botella, Saludos

jesger

Estimados buen aporte, quiero poner en consulta lo siguiente
eh realizado lo propuesto aqu. con exito segun log

crea las tablas etc etc etc

mi server tiene un proxi transparente.

el problema es cuando redirecciono el trafico desde mk me quedo sin acceso y no tengo salia a internet

no me muestra ningun mensaje de erro ni nada en el log.

cuando vuelvo a la configuracion simple de siempre todo funciona ok

quisiera alguna ayuda

mi server es de 4 core
 gracias
skype: jesger19140 - - whatsapp +51990908782