Quais são as diferenças entre as imagens de kernel “genéricas” e “servidoras” fornecidas pelo Ubuntu?

2

Em particular, gostaria de saber se existem patches ou ajustes de configuração feitos no tamanho do cache de disco na edição do servidor. Estou rodando em um sistema pequeno (256M de RAM) e gostaria de experimentar manter o tamanho do cache de disco menor para que haja mais memória disponível para aplicativos.

Eu encontrei esta página no site do Ubuntu, que não responde às minhas perguntas nem é sobre a versão 9.04.

    
por dcrosta 30.09.2009 / 16:29

4 respostas

4

Eu estou supondo que a diferença está principalmente no fato de que o kernel do servidor não é preventivo, como é o kernel do desktop. Isso é um pouco complicado:

Aprimoramento significa chutar o processo A da CPU em favor do processo B, em termos simples. Os usuários finais esperam um sistema responsivo. Portanto, um desktop executará um kernel preventivo, que pode favorecer a interação do usuário acima dos programas em execução. Isso significa que o kernel pode "chutar" um programa em segundo plano, favorecendo um programa do usuário, concedendo-lhe tempo de execução na CPU, mesmo antes que o período de tempo do programa em segundo plano termine e antes que o programa em segundo plano forneça a CPU.

Um servidor, por outro lado, é construído para rodar alguns programas em segundo plano (como o Apache) e não para interagir com um usuário. Portanto, um servidor executará um kernel não preemptivo e, portanto, será otimizado para executar programas em segundo plano.

Você pode ler um pouco sobre a configuração do kernel do Ubuntu aqui . O artigo tem alguns anos, mas tenho certeza que o bit de preempção ainda é uma das maiores diferenças entre os kernels de desktop e servidores do Ubuntu. Outra diferença é a escolha do agendador de I / O: o servidor usa o agendador de prazos, o desktop o CFQ. Admito que tirei isso do artigo vinculado.

Quanto ao cache de disco, o Linux armazena em cache. Período. O Linux terá todo o prazer em usar all da sua RAM como cache de disco. Não importa se você tem 512MB de RAM ou 1GB de RAM: o Linux irá usá-lo se achar adequado. Não há ajustes disso que eu saiba.

Também saiba que não há desvantagem nisso: como seus programas exigem mais RAM, menos memória RAM será usada para o cache. O fato de sua VM ter apenas 256 MB e de que parte dela é usada como cache, não prejudicará o desempenho de seus programas: se os programas solicitarem RAM, eles a obterão instantaneamente, ao custo de ter menos cache. Isso é uma coisa boa TM . Novamente: a memória usada como cache ainda está disponível para seus aplicativos. Ele será recuperado instantaneamente e dado a um aplicativo que não consome memória, se o kernel achar apropriado. Rodar um kernel diferente não vai mudar isso.

    
por 30.09.2009 / 17:12
3

Parece que as diferenças estão principalmente relacionadas ao relógio, pae e xen.

--- config-2.6.28-15-generic    2009-09-09 05:56:49.000000000 -0700
+++ config-2.6.28-15-server 2009-09-09 06:13:24.000000000 -0700
@@ -3659,7 +3659,7 @@
 CONFIG_UWB_WHCI=m
 CONFIG_UWB_WLP=m
 CONFIG_V4L_USB_DRIVERS=y
-CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.28-15.52-generic"
+CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.28-15.52-server"
 CONFIG_VETH=m
 CONFIG_VFAT_FS=m
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
@@ -3932,34 +3932,41 @@
 # CONFIG_ZONE_DMA32 is not set
 CONFIG_ZONE_DMA_FLAG=1
 #
-# Config options for config.generic automatically generated by splitconfig.pl
+# Config options for config.server automatically generated by splitconfig.pl
 #
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-CONFIG_DCA=m
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_DMADEVICES=y
-# CONFIG_DMATEST is not set
-CONFIG_DMA_ENGINE=y
-CONFIG_HIGHMEM4G=y
-# CONFIG_HIGHMEM64G is not set
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-CONFIG_IGB_DCA=y
-CONFIG_INTEL_IOATDMA=m
-CONFIG_IXGBE_DCA=y
-# CONFIG_LGUEST is not set
-# CONFIG_LGUEST_GUEST is not set
-CONFIG_M586=y
-# CONFIG_M686 is not set
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NET_DMA=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_X86_ALIGNMENT_16=y
-CONFIG_X86_E_POWERSAVER=m
-CONFIG_X86_F00F_BUG=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_DEADLINE=y
+CONFIG_DEFAULT_IOSCHED="deadline"
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
+CONFIG_HVC_IRQ=y
+CONFIG_HVC_XEN=y
+CONFIG_HZ=100
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+# CONFIG_M586 is not set
+CONFIG_M686=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_RESOURCES_64BIT=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_DEBUGCTLMSR=y
+# CONFIG_X86_DS is not set
+# CONFIG_X86_E_POWERSAVER is not set
+CONFIG_X86_PAE=y
+CONFIG_X86_TSC=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_XEN=y
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_BLKDEV_FRONTEND=m
+# CONFIG_XEN_DEBUG_FS is not set
+CONFIG_XEN_FBDEV_FRONTEND=m
+CONFIG_XEN_KBDDEV_FRONTEND=m
+CONFIG_XEN_MAX_DOMAIN_MEMORY=8
+CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_XEN_SAVE_RESTORE=y
+CONFIG_XEN_SCRUB_PAGES=y
    
por 30.09.2009 / 18:34
1

Uma coisa importante que encontrei ao tentar usar > 2GB de RAM no meu laptop, que executava o Ubuntu de 32 bits com um kernel de desktop. Substituindo o kernel da área de trabalho por um kernel de servidor, habilitou a PAE, para que pudesse endereçar mais memória. No final, acabei colocando o Ubuntu de 64 bits nele.

    
por 30.09.2009 / 17:55
1

Uma atualização desde que isto mudou no Ubuntu 12.04 Precise:

Since 12.04, there is no difference in kernel between Ubuntu Desktop and Ubuntu Server since linux-image-server is merged into linux-image-generic.

Fonte: link

Discussão sobre isso pode ser encontrada em: link

    
por 05.09.2012 / 09:42