В частности, мне интересно, есть ли какие-либо исправления или изменения конфигурации, внесенные в размер дискового кеша в серверной версии. Я использую небольшую систему (256 МБ ОЗУ) и хотел бы поэкспериментировать с уменьшением размера дискового кеша, чтобы для приложений было доступно больше памяти.
я обнаружил эта страница на сайте Ubuntu, который не отвечает на мои вопросы и не касается версии 9.04.
Я предполагаю, что разница в основном в том, что ядро сервера не является вытесняющим, как ядро рабочего стола. Это немного сложно:
Простыми словами, вытеснение означает удаление процесса A из ЦП в пользу процесса B. Конечные пользователи ожидают отзывчивой системы. Следовательно, на рабочем столе будет работать ядро с вытеснением, которое может способствовать взаимодействию с пользователем, а не запущенным программам. Это означает, что ядро может «пнуть» фоновую программу, отдавая предпочтение пользовательской программе, предоставляя ей время выполнения на ЦП, даже до того, как закончится временной интервал фоновой программы и до того, как фоновая программа уступит ЦП.
С другой стороны, сервер создан для запуска пары программ в фоновом режиме (например, Apache), а не для взаимодействия с пользователем. Следовательно, на сервере будет работать ядро без вытеснения, и поэтому он будет оптимизирован для запуска программ в фоновом режиме.
Вы можете прочитать немного о конфигурации ядра Ubuntu Вот. Этой статье уже несколько лет, но я почти уверен, что бит вытеснения по-прежнему является одним из самых больших различий между ядрами рабочего стола и сервером Ubuntu. Еще одно отличие - выбор планировщика ввода-вывода: сервер использует планировщик сроков, рабочий стол - CFQ. По общему признанию, я взял это из связанной статьи.
Что касается дискового кеша, то кеширует Linux. Период. Linux с радостью использует все вашей оперативной памяти в качестве дискового кеша. Неважно, есть ли у вас 512 МБ ОЗУ или 1 ГБ ОЗУ: Linux будет использовать его, если сочтет нужным. Я не знаю об этом.
Также знайте, что в этом нет недостатков: поскольку вашим программам требуется больше ОЗУ, для кеширования будет использоваться меньше ОЗУ. Тот факт, что ваша виртуальная машина имеет только 256 МБ и что часть из них используется в качестве кеша, не повлияет на производительность ваших программ: если программы запрашивают оперативную память, они получат ее мгновенно, за счет уменьшения объема кеша. Это хорошая вещь TM. Опять же: память, используемая в качестве кеша, по-прежнему доступна вашим приложениям. Он будет немедленно восстановлен и передан приложению, требующему памяти, если ядро сочтет это подходящим. Запуск другого ядра этого не изменит.
Похоже, что в основном различия связаны с часами, pae и 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
Одна важная вещь, которую я обнаружил, пытаясь использовать> 2 ГБ оперативной памяти на моем ноутбуке, который работал под управлением 32-разрядной Ubuntu с ядром настольного компьютера. Замена ядра рабочего стола ядром сервера включила PAE, чтобы он мог адресовать больше памяти. В конце концов, вместо этого я поставил на него 64-битную Ubuntu.
Обновление с тех пор, как это изменилось в Ubuntu 12.04 Precise:
Начиная с 12.04, нет разницы в ядре между Ubuntu Desktop и Ubuntu Server, поскольку linux-image-server объединен с linux-image-generic.
Источник: https://help.ubuntu.com/community/ServerFaq
Обсуждение этого можно найти на: https://lists.ubuntu.com/archives/kernel-team/2011-October/017471.html