Ubuntu提供的“通用”和“服务器”内核映像有什么区别?

特别是,我想知道是否有任何修补程序或configuration调整在服务器版中的磁盘caching大小。 我正在运行一个小的系统(256M RAM),并且希望尝试保持磁盘高速caching的大小,以便有更多的内存可用于应用程序。

我在Ubuntu的网站上发现了这个页面 ,它既不回答我的问题,也不回答9.04版本。

我猜测这种差异主要是因为服务器内核不是先发制人的,就像桌面内核一样。 这有点复杂:

抢占意味着从CPU中踢出进程A,以简单的方式处理进程B. 最终用户期望一个响应式系统。 因此,桌面将运行一个抢占式的内核,这可以在运行程序之上进行用户交互。 这意味着内核可以“踢”后台程序,即使在后台程序的时间片结束之前和后台程序产生CPU之前,也可以通过在CPU上授予其运行时间来支持用户程序。

另一方面,服务器是为了在后台运行一些程序(如Apache),而不是与用户交互。 因此,一台服务器将运行一个非抢先式的内核,所以要在后台运行程序进行优化。

您可以在这里阅读关于Ubuntu内核configuration的一些信息 。 这篇文章已经有两三年的历史了,但是我相当确定抢占位仍然是Ubuntu桌面和服务器内核之间最大的区别之一。 另一个区别是I / O调度器的select:服务器使用最后期限调度器,桌面CFQ。 无可否认,我从链接的文章中获得了这一点。

至于磁盘caching,Linuxcaching。 期。 Linux会愉快地使用所有的RAM作为磁盘caching。 如果你有512MB内存或者1GB内存,那么无关紧要:如果Linux认为合适,Linux将使用它。 我没有意识到这一点。

也知道这样做没有任何缺点:由于你的程序需要更多的内存,所以caching使用的RAM更less。 事实上,你的虚拟机只有256MB,其中一些被用作caching,不会妨碍你的程序的性能:如果程序请求RAM,他们会立即得到它,代价是cachingless。 这是一件好事TM 。 同样:用作caching的内存仍然可用于您的应用程序。 如果内核认为合适,它将被立即回收并给予内存饥渴的应用程序。 运行不同的内核不会改变这一点。

看来,差异主要与时钟,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 

当我在我的笔记本电脑上使用大于2GB的内存时发现了一个重要的事情,那就是运行带桌面内核的32位Ubuntu。 用服务器内核replace桌面内核,启用PAE,这样可以解决更多的内存问题。 最后,我最终把64位的Ubuntu上,而不是。

在Ubuntu 12.04中这个更新已经改变了Precise:

从12.04开始,由于linux-image-server被合并到linux-image-generic中,Ubuntu Desktop和Ubuntu Server之间的内核没有区别。

来源: https : //help.ubuntu.com/community/ServerFaq

有关这方面的讨论可以在以下urlfind: https : //lists.ubuntu.com/archives/kernel-team/2011-October/017471.html