mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-28 01:01:09 +08:00
Merge branch 'master' of https://github.com/LCTT/TranslateProject
This commit is contained in:
commit
1e63c7d7ca
published
How to Control Your Linux PC with an Android Device.mdHow to convert DOCX, DOC, RTF, ODT to PDF with LibreOffice.md
The Linux Kernel
sources
translated
@ -0,0 +1,65 @@
|
||||
如何使用安卓设备控制你的Linux PC
|
||||
================================================================================
|
||||
**下面的教程会指导所有的Linux用户如何在系统上安装SSH,以便通过安卓智能手机远程访问他们的电脑。**
|
||||
|
||||

|
||||
如今我们所有人都拥有一台平板或触屏手机,我们经常使用它们在深夜里看电影或电视节目,听歌或者读一本好书。你可以把本文称作是“懒人教程”,它是专门为那些在大晚上因为太过疲惫而懒得去开启他们电脑上的某些应用程序,移动、删除,复制或重命名某些文件,甚至懒得去关掉PC的人准备的。
|
||||
|
||||
的确,已经有各种各样的远程桌面解决方案,但是许多方案费用很高,或者实现效果很糟糕,无法像预期一样运行,迫使你最终还是得去电脑上做你原本想做的事情。
|
||||
|
||||
在这个教程里面,我们将使用一种简单、安全、高效的协议,它被称为SSH (Secure Shell),很容易从默认的软件仓库中安装(在Arch linx中是openssh,在Ubuntu中是openssh-server)。
|
||||
|
||||
### 配置SSH服务器 ###
|
||||
|
||||
在安装完成后,你需要为SSH服务器进行基本配置。为此,你需要使用文本编辑器编辑/etc/ssh/sshd_config这个文件。
|
||||
|
||||
1.在文件尾部添加下面一行(下面的yourusername使用你的Linux机器上存在的用户名代替)
|
||||
|
||||
AllowUsers yourusername
|
||||
|
||||
2.取消"#PermitRootLogin"这行注释,把"no"替换成"yes"(译注:下面的选项修改和是否允许ssh登录无关,只是允许root直接登录,一般而言,并不建议如下这样的远程root直接登录。):
|
||||
|
||||
PermitRootLogin no
|
||||
|
||||
3.为了安全起见,你需要修改SSH 连接默认的22端口到一个更大编号的端口,譬如在我们的例子中是55441
|
||||
(但不要使用55441,这是我举个列子,可以找另一个四位或者五位数字)。因此,取消注释并编辑"#Port 22"如下(译注:你可以选择任何一个大于1024并小于65535的端口,只要他没有被别的程序占用,为什么不试试你的幸运数字呢?):
|
||||
|
||||
Port 55441
|
||||
|
||||
### 开启SSH服务器###
|
||||
|
||||
在Ubuntu上,SSH服务通过下面的命令启动:
|
||||
|
||||
sudo /etc/init.d/ssh start
|
||||
|
||||
当你每次修改上述配置文件时,都需要通过下面的命令重启:
|
||||
|
||||
sudo /etc/init.d/ssh restart
|
||||
|
||||
在Arch Linux上,你可以使用下面的命令启动SSH服务:
|
||||
|
||||
sudo systemctl start sshd
|
||||
|
||||
### 配置安卓设备上的SSH客户端###
|
||||
|
||||
JuiceSSH似乎是安卓上最好的SSH客户端之一,而且是免费的。同时,如果你认为它的功能比较简单,可以花费少量的钱来得到更多高级的特性,譬如亚马逊 AWS/EC2 集成,团队协作,以及更多其它的特性。
|
||||
|
||||
一旦软件安装完毕,开启它,然后你会要求输入一个加密的密码以保证连接的安全。这个密码由AES-256进行加密,因此除非你的设备被偷,否则没有人能够获取它们。
|
||||
|
||||

|
||||
|
||||
现在,添加一个新连接,为你的电脑选择名称、IP地址,上面设定的端口号以及一个需要被创建的身份。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
这就是我的Arch Linux机器,这是通过我的安卓平板上的JuiceSSH客户端访问到的界面。如果在这个教程中你遇到问题,请在下面进行评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/How-to-Control-Your-Linux-PC-with-an-Android-Device-396004.shtml
|
||||
|
||||
译者:[KayGuoWhu](https://github.com/KayGuoWhu) 校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,6 +1,4 @@
|
||||
|
||||
|
||||
如何使用LibreOffice把DOCX, DOC, RTF, ODT 转换成PDF
|
||||
如何使用LibreOffice把DOCX,DOC,RTF,ODT转换成PDF
|
||||
================================================================================
|
||||
在学校、公司、政府,或者是在网页传播的书籍、文档、报告、教程等等文档均被封装成各种格式。
|
||||
|
||||
@ -28,7 +26,7 @@
|
||||
|
||||
via: http://iloveubuntu.net/how-convert-docx-doc-rtf-odt-pdf-libreoffice
|
||||
|
||||
译者:[NearTan](https://github.com/NearTan) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[NearTan](https://github.com/NearTan) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
160
published/The Linux Kernel/08 The Linux Kernel--Configuring the Kernel Part 4.md
Executable file
160
published/The Linux Kernel/08 The Linux Kernel--Configuring the Kernel Part 4.md
Executable file
@ -0,0 +1,160 @@
|
||||
戴文的Linux内核专题:08 配置内核(4)
|
||||
================================================================================
|
||||
|
||||
在这个第四部分里,我们将继续配置更多的设置和特性。
|
||||
|
||||
这里我们被问及关于"IBM Calgary IOMMU support (CALGARY\_IOMMU)"。这个选项将会提供对IBM xSeries x366和x460的IOMMU的支持。这也将让那些32位PCI的设备工作正常——在这些系统上不支持双地址周期(DAC : Double Address Cycle)——因为该系统设置在访问超过3GB内存的时候会有问题。如果需要这些IOMMU设备可以用"iommu=off"在启动时关闭。(这些内核/模块参数会在以后的文章中讨论)
|
||||
|
||||
IOMMU(input/output memory management unit)是一个内存管理单元(MMU),它连接具有DMA功能的I/O总线到主内存上。DMA(Direct Memory Access)是许多计算机支持的一种允许特定设备不借助CPU直接访问内存的特性。双地址周期(Double Address Cycle, DAC)是64位DMA;而通常的DMA使用32位。
|
||||
|
||||
下面,我们被问及是否默认启用Calgary(Should Calgary be enabled by default? (CALGARY\_IOMMU\_ENABLED\_BY\_DEFAULT))。Calgary与上面提到的IOMMU是同一个概念。这两者之间的不同是IOMMU可以支持许多设备而Calgary只能支持IBM IOMMU设备。如果禁用了它,但是以后需要使用到它,可以使用内核参数(iommu=calgary)。
|
||||
|
||||
这里有个问题需要小心处理(Enable Maximum number of SMP Processors and NUMA Nodes (MAXSMP))。只有在内核运行在拥有很多SMP处理器和NUMA节点的情况下才启用它,如Core i7和许多AMD CPU芯片。如果系统缺乏或者只有少量的SMP处理器和NUMA节点,内核就会变得低效。这个最好选择"No"。
|
||||
|
||||
非一致性内存访问(Non-Uniform Memory Access (NUMA))是一个每块内存都需要花费更长时间访问其他部分内存的系统。一个节点就是一组内存。例如,一个NUMA系统可能有三块内存芯片。每块芯片是一个节点,在带CPU的主板上有一个节点/芯片(这是最快的节点),另外两个在不同的总线上。这两个节点需要比第一个节点花费更长的时间去访问。
|
||||
|
||||
注意:ccNUMA和NUMA目前是一样的,至少是非常相似的。
|
||||
|
||||
对称多处理器(Symmetric Multi-Processing (SMP))是NUMA的替代品。它的内存在同一根总线上。只有限定数量的CPU可以访问总线,所以这限制了SMP系统上处理器的数量。然而它内存的访问速度一样块。
|
||||
|
||||
注意:我是在为AMD64系统在编译内核,所以我会告诉你我的选择,来帮助读者理解过程和选择。如果我没有指出我的选择,那么我用的就是默认选择。如果你在为不同的系统编译或者你有不同的需求,你需要在你的情况下做出替代的选择。
|
||||
|
||||
接下来,除非配置工具已经为你做了选择,选择一个内核需要支持的最多CPU的数量。这个配置根据你给的数量优化内核。
|
||||
|
||||
接着启用或禁用"SMT (Hyperthreading) scheduler support (SCHED\_SMT)"(超线程调度器支持)。SMT调度器提升了在使用了超线程技术的Pentium 4处理器上的CPU决策能力。然而,这会带来额外的功耗,在一些系统上最好像我一样选择"no"。
|
||||
|
||||
超线程一种专有的SMT并行微处理器(Intel 实现了它)。这是多任务/多线程(同时做许多任务)的一种特殊形式,并行多线程(Simultaneous multithreading (SMT))提升了多线程执行的效率。
|
||||
|
||||
在这之后,启用或者禁用"Multi-core scheduler support (SCHED\_MC)"。这样也是一种提升多核CPU决策的特性。然而这回带来额外功耗,我选择了"No"。
|
||||
|
||||
在下一个选项中可以选择抢占模式。
|
||||
|
||||
Preemption Model(抢占模式)
|
||||
|
||||
1\. No Forced Preemption (Server) (PREEMPT\_NONE) (非强制抢占)
|
||||
|
||||
\> 2. Voluntary Kernel Preemption (Desktop) (PREEMPT\_VOLUNTARY) (自愿内核抢占)
|
||||
|
||||
3\. Preemptible Kernel (Low-Latency Desktop) (PREEMPT) (可抢占内核)
|
||||
|
||||
choice[1-3]: 2
|
||||
|
||||
抢占就是暂停一个意图让它之后继续执行的中断任务的过程。抢占强制一个进程暂停,执行中的任务无法忽视抢占。
|
||||
|
||||
接着,我们被询问关于"Reroute for broken boot IRQs (X86\_REROUTE\_FOR\_BROKEN\_BOOT\_IRQS)"。这是一个对于假中断的简单修复。假中断是一种无用的硬件中断,这些通常是有电子干扰或者错误连接的电子产品触发。记住,中断是发送给处理器需要马上注意的信号。
|
||||
|
||||
这个选项对任何机器都很重要;我怀疑任何人可能都会有禁用这个特性的理由(Machine Check / overheating reporting (X86\_MCE))。内核必须意识到过热和数据损坏,不然,系统将会继续操作,这样只会导致进一步的破坏。
|
||||
|
||||
下面,用户可以启用禁用"Intel MCE features (X86\_MCE\_INTEL)",这是一种额外的对像热度监控的Intel MCE特性的支持。因为我是为AMD64处理器编译内核所以我选择了"no"。机器检测异常(MCE)是一种当处理器发现硬件问题时的错误输出。MCE通常会导致内核严重错误(kernel panic)(相当于Windows中的"蓝屏")。
|
||||
|
||||
这个除了是AMD设备外是同一个问题Intel MCE features (X86\_MCE\_INTEL)。
|
||||
|
||||
下一个是我会禁用的调试特性(Machine check injector support (X86\_MCE\_INJECT))。这个会允许注射检查。如果你偶尔执行机器注射,那最好编译成模块而不是编译进内核。机器注射可以使设备即使实际没有错误也可以发送一个伪造的错误信息。这个用来确认内核和其他进程可以正常处理错误。比如,如果CPU过热,接着应该关机,但是开发者如何在不损坏CPU的情况下测试代码。注射错误是一种最好的方法,因为它只是一种告诉硬件发送错误信号的软件。
|
||||
|
||||
注:模块是对可能被使用或者很少执行的特性/驱动而言的。只加入在许多使用该内核的系统中用到的特性/驱动到内核中。
|
||||
|
||||
如果内核很可能用在Dell笔记本上,那么启用这个特性(Dell laptop support (I8K))。否则,如果一些用户可能在戴尔笔记本电脑上用到这个内核,将其作为一个模块加入。如果这个内核不打算支持Dell笔记本,那就像我一样忽略掉它。特别地,这个支持是一个允许Dell Inspiron 8000系列笔记本访问处理器的系统管理模式的驱动。系统管理模式的目的是得到处理器的温度和风扇状态,这对一些需要控制风扇的系统有用。
|
||||
|
||||
下面,用户可以选择微码加载支持(CPU microcode loading support (MICROCODE))。这可以允许用户在支持这个特性的AMD或者Intel芯片上更新微码。
|
||||
|
||||
注意:为了加载微码,你必须拥有一个为你的处理器设计的合法的二进制微代码拷贝。
|
||||
|
||||
如果要加载微码补丁(修复bug或加入次要的特性)到intel芯片上(Intel microcode loading support (MICROCODE\_INTEL)),这个就必须启用。这里我禁用了它。
|
||||
|
||||
然后是AMD芯片的类似选项(AMD microcode loading support (MICROCODE\_AMD))。
|
||||
|
||||
启用这个支持(/dev/cpu/*/msr - Model-specific register support (X86\_MSR))可以允许某个处理器有权限使用x86特殊模块寄存器(Model-Specific Registers (MSRs))。这些寄存器是一些字符设备,包括major 202下minor 0到31的设备((/dev/cpu/0/msr to /dev/cpu/31/msr))。这个特性用在多处理器系统上。每个虚拟字符设备都连接到一个特定的CPU。
|
||||
|
||||
注意:MSRs被用来改变CPU设备、调试、性能监控和执行追踪。MSRs使用x86指令集。
|
||||
|
||||
在这之后,我们有一个选项"CPU information support (X86\_CPUID)",启用这个特性允许处理器访问x86 CPUID指令,这需要通过字符设备在一个特定的CPU上执行。这些字符设备包括major 202下minor 0到31的设备(/dev/cpu/0/msr to /dev/cpu/31/msr),就像上面x86\_MSR支持的这些。
|
||||
|
||||
如果处理器支持,启用内核线性映射来使用1GB的内存页(Enable 1GB pages for kernel pagetables (DIRECT\_GBPAGES))。启用这个可以帮助减轻TLB的压力。
|
||||
|
||||
页是内存本身的基本单位(位是数据的基本单位)。页的大小是由硬件自身决定的。页码表是虚拟和物理内存间的映射。物理内存是设备上的内存。虚拟内存是到内存的地址。依赖于系统架构,硬件可以访问大于实际内存地址的地址。举例来说,一个64位系统拥有6GB内存,管理员在需要时可以加上更多的内存。这是因为还有很多虚拟内存地址。然而,在很多32位系统上,系统管理员可以增加一条8GB的内存,但是系统无法完全使用它,因为系统中没有足够的虚拟内存地址去访问大容量的内存。转换后援缓冲器(Translation Lookaside Buffer (TLB))是一种提升虚拟内存转换速度的缓存系统。
|
||||
|
||||
下面,我们看到了NUMA选项(Numa Memory Allocation and Scheduler Support (NUMA))。这可以允许内核在CPU本地内存分配器上分配CPU可使用的内存。这个支持同样可使内核更好感知到NUMA。很少的32位系统需要这个特性,但是一些通用的645位处理器使用这个特性。我选择了"no"。
|
||||
|
||||
为了系统使用旧方式来检测AMD NUMA节点拓扑,启用这个特性(Old style AMD Opteron NUMA detection (AMD\_NUMA))。下一个选项是一种更新的检测方式(ACPI NUMA detection (X86\_64\_ACPI\_NUMA))。如果两个都启用,新的方式将会占支配作用。一些硬件在使用其中一种方式而不是另外一个时工作得更好。
|
||||
|
||||
如果为了调试目的的NUMA仿真,可以启用下一个特性(NUMA emulation (NUMA\_EMU))。
|
||||
|
||||
注意:如果你不打算进行调试并且你需要一个快速、轻量级系统,那么禁用尽可能多的调试特性。
|
||||
|
||||
下一个选项中,选择你的内核打算如何处理NUMA节点的最大数量。接下来选择内存模型,这里可能只有一个内存模型选择。内存模型指定了内存如何存储。
|
||||
|
||||
Maximum NUMA Nodes (as a power of 2) (NODES\_SHIFT) [6]
|
||||
|
||||
Memory model
|
||||
|
||||
\> 1. Sparse Memory (SPARSEMEM\_MANUAL)
|
||||
|
||||
choice[1]: 1
|
||||
|
||||
为了提升性能,这里有一个选项用通过虚拟内存映射(Sparse Memory virtual memmap (SPARSEMEM\_VMEMMAP))来优化pfn\_to\_page和page\_to\_pfn操作。页帧号是每页被给定的号码。这两个操作用来从号码得到页或者从页得到号码。
|
||||
|
||||
下一个选项是允许一个节点可以移除内存(Enable to assign a node which has only movable memory (MOVABLE\_NODE))。内核页通常无法移除。当启用后,用户可以热插拔内存节点,同样可移除内存允许内存整理。作为出入内存的数据,只要有可用空间一组数据可能被划分到不同内存。
|
||||
|
||||
接着前面的内存问题,我们还有更多的问题。这些可能已被配置工具预配置了。第三个选项(BALLOON\_COMPACTION),当启用时可以帮助减少内存碎片。碎片内存会减慢系统速度。第四个选项(COMPACTION)允许内存压缩。下面列到的第五个选项(MIGRATION)允许页面被移动。
|
||||
|
||||
- Allow for memory hot-add (MEMORY\_HOTPLUG) (允许内存热添加)
|
||||
- Allow for memory hot remove (MEMORY\_HOTREMOVE) (允许内存热移除)
|
||||
- Allow for balloon memory compaction/migration (BALLOON\_COMPACTION) (允许泡状内存规整和合并)
|
||||
- Allow for memory compaction (允许内存规整)
|
||||
- Page migration (MIGRATION) (页合并)
|
||||
|
||||
注意:启用可移动内存会启用以上5个特性。
|
||||
|
||||
下一步,我们可以"Enable KSM for page merging (KSM)"。内核同页合并(Kernel Samepage Merging (KSM))会查看程序认为可以合并的内核。如果两页内存完全相同这可以节约内存。一块内存可以被删除或者被合并,并且只有一块可以使用。
|
||||
|
||||
配置工具可能会自动选择保存多少内存用于用户分配(Low address space to protect from user allocation (DEFAULT\_MMAP\_MIN\_ADDR) [65536])。
|
||||
|
||||
下一个选项很重要(Enable recovery from hardware memory errors (MEMORY\_FAILURE))。如果内存故障并且系统有MCA恢复或者ECC内存,系统就可以继续运行并且恢复。要使用这个特性,硬件自身和内核都必须支持。
|
||||
|
||||
机器检测架构(Machine Check Architecture (MCA))是一个一些CPU上可以发送硬件错误信息给操作系统的特性。错误更正码内存(Error-correcting code memory (ECC memory))是一种内存设备检测和纠正错误的形式。
|
||||
|
||||
下面,配置工具会自动启用"HWPoison pages injector (HWPOISON\_INJECT)"。这个特性允许内核标记一块坏页为"poisoned",接着内核会杀死创建坏页的程序。这有助于停止并纠正错误。
|
||||
|
||||
为了允许内核使用大页(Transparent Hugepage Support (TRANSPARENT\_HUGEPAGE)),启用这个特性。这可以加速系统但是需要更多内存。嵌入式系统不必使用这个特性。嵌入式系统通常只有非常小的内存。
|
||||
|
||||
如果启用了上面的,那么必须配置大页的sysfs支持。
|
||||
|
||||
Transparent Hugepage Support sysfs defaults
|
||||
|
||||
1\. always (TRANSPARENT\_HUGEPAGE\_ALWAYS)
|
||||
|
||||
\> 2. madvise (TRANSPARENT\_HUGEPAGE\_MADVISE)
|
||||
|
||||
choice[1-2?]: 2
|
||||
|
||||
下面的选项是增加process\_vm\_readv和process\_vm\_writev这两个系统调用(Cross Memory Support (CROSS\_MEMORY\_ATTACH))。这允许特权进程访问另外一个程序的地址空间。
|
||||
|
||||
如果有tmem,启用缓存清理(cleancache)通常是一个好主意 (Enable cleancache driver to cache clean pages if Transcendent Memory (tmem) is present (CLEANCACHE))。当一些内存页需要从内存中移除时,cleancache会将页面放在cleancache-enabled的文件系统上。当需要该页时,页会被重新放回内存中。超内存(tmem)没有一组已知大小的内存,内核对此内存使用间接寻址。
|
||||
|
||||
下一个选项允许在tmen激活后缓存交换页(Enable frontswap to cache swap pages if tmem is present (FRONTSWAP))。frontswap在交换分区放置数据。交换特性的支持需要这个。
|
||||
|
||||
最好启用下一个特性(Check for low memory corruption (X86\_CHECK\_BIOS\_CORRUPTION))。这会检测低位内存的内存损坏情况。这个特性在执行期被禁止。为了启用这个特性,在内核命令行内加入 "memory\_corruption\_check=1"(这会在以后的文章中讨论;这不同于任何命令行)。即使经常执行这个特性,也只使用非常小的开销(接近没有)。
|
||||
|
||||
接下来我门可以设置内存损坏检测的默认设置(“Set the default setting of memory\_corruption\_check (X86\_BOOTPARAM\_MEMORY\_CORRUPTION\_CHECK))。这可以选择是否开启或关闭memory\_corruption\_check。最好启用内存损坏检测不然如果一部分重要内存损坏后可能会导致数据丢失和系统崩溃。
|
||||
|
||||
这个选项关注的是BIOS(Amount of low memory, in kilobytes, to reserve for the BIOS (X86\_RESERVE\_LOW) [64])。配置工具通常知道给BIOS预留内存的最佳大小。
|
||||
|
||||
对于Intel P6处理器,开发者可以启用存储区域类型寄存器(MTRR (Memory Type Range Register) support (MTRR))。这用于连接着VGA卡的AGP和PCI卡。启用这个特性内核会创建/proc/mtrr。
|
||||
|
||||
如果X驱动需要加入回写入口,那么启用下面的选项(MTRR cleanup support (MTRR\_SANITIZER))。这会将MTRR的布局从连续转换到离散。存储区域类型寄存器(Memory type range registers (MTRRs))提供了一种软件访问CPU缓存的方法。
|
||||
|
||||
下面,配置工具已经设置了一些MTRR选项
|
||||
|
||||
- MTRR cleanup enable value (0-1) (MTRR\_SANITIZER\_ENABLE\_DEFAULT) [1]
|
||||
|
||||
- MTRR cleanup spare reg num (0-7) (MTRR\_SANITIZER\_SPARE\_REG\_NR\_DEFAULT) [1]
|
||||
|
||||
为了设置页级缓冲控制,那就启用PAT属性(x86 PAT support (X86\_PAT))。页属性表(Page Attribute Table (PATs))是现在版的MTRRs并比它更灵活。如果你经历过因启用它而引发的启动问题,那么禁用这个特性后重新编译内核。我选择了"no"。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-4.4392/
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,55 +0,0 @@
|
||||
being translated by bazz2
|
||||
10 Years of Xen: Transforming a Dinosaur Into a Bird
|
||||
================================================================================
|
||||
Xen Hypervisor development started at [Cambridge University][1] as part of the [Xenoserver][2] research project in the late 90’s. The goal of Xenoserver was ambitious:
|
||||
|
||||
The Xenoserver project is building a public infrastructure for wide-area distributed computing. We envisage a world in which Xenoserver execution platforms will be scattered across the globe and available for any member of the public to submit code for execution. The sponsor of the code will be billed for all the resources used or reserved during the course of execution. This will serve to encourage load balancing, limit congestion, and hopefully even make the platform self-financing.
|
||||
|
||||
Today, this model of computing is called cloud computing. And the Xen Hypervisor was - and indeed is today - instrumental in enabling the biggest cloud in production. Not only are Amazon Web Services and Rackspace Public cloud based on Xen. New large deployments such as [Verizon Public Cloud][3] also chose Xen as basis for their offering.
|
||||
|
||||
### Happy 10th Birthday ###
|
||||
|
||||
On October 21st, 2003 at the [19th ACM Symposium on Operating Systems Principles][4] the Xen Hypervisor was first revealed as an open source project to the public. Exactly 10 years ago. Time to wish the project a Happy 10th Birthday!
|
||||
|
||||
### The Burden of being First : Or what happened to the Dinosaurs? ###
|
||||
|
||||
Sometimes being the first open source project in its field can become a burden. Why? Because, community problems can build up unchecked. The simple fact is that lack of competition can cause complacency. This is what happened to the Xen Project. For the first few years of its life the project operated without governance, became insular, didn’t promote itself and failed to engage its users and contributors. When its first open source competitor - KVM - gathered steam, the community was slow to respond and change.
|
||||
|
||||
The effect of all this was that it was difficult to join the project and that the project did not play well with the Linux kernel, QEMU and Linux distros. In the end, the Xen community got a bad reputation. Ultimately this resulted in Canonical and RedHat dropping Xen support in favour of KVM. Add to the mix a failure to tell the world, when things did change. The bad reputation lingered and eventually the project was seen as a dinosaur by the open source community and technology press. Destined to be extinct in the near future.
|
||||
|
||||
### Evolving fast : The Dinosaur becomes a Bird ###
|
||||
|
||||
Not many open source projects recover from mistakes like the ones the Xen community made. The Xen Project managed to do this, through a combination of introducing good governance, active efforts to collaborate with other open source projects, rebooting marketing efforts and actively working with users and contributors to the project. In other words, the project had to
|
||||
Xen Project flying Panda
|
||||
|
||||
Let the Bird fly (or more correctly, give the Xen Project’s Panda wings).
|
||||
transform itself from a Dinosaur to a Bird. If you want to know how we did this, why not attend my LinuxCon EU session called [Xen Project : Lessons Learned][5]? Other sessions you may want to attend are [Securing your Xen based Cloud][6] and [Xen: Open Source Hypervisor Designed for Clouds][7].
|
||||
|
||||

|
||||
|
||||
*Let the Bird fly (or more correctly, give the Xen Project’s Panda wings).*
|
||||
|
||||
### A peek into the Future : New Frontiers in Virtualization ###
|
||||
|
||||
If you look at the Xen Project now, you will find that the community is diverse and growing. On many counts, it is bigger and more diverse than it has ever been.
|
||||
|
||||
One of the interesting things that is happening in the Xen Community at the moment is adoption of the Xen Project’s software for non-traditional virtualization use-cases. This is mirroring a rise in activity by embedded companies in the Linux community in general. At the [Xen Project Developer Summit][8] later this week, we will see two Android VMs running on top of Xen on a Nexus 10, we will see first experiments in using Xen for In-Vehicle-Infotainment and automotive applications in general, and we will see how Xen can provide the high performance expected of hardware-based middlebox offerings such as firewalls and NATs.
|
||||
|
||||
Of course, there is also plenty innovation in server virtualization and cloud. Let the Bird fly (or more correctly, give the Xen Project’s Panda wings).
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linux.com/news/enterprise/cloud-computing/743330-10-years-of-xen-transforming-a-dinosaur-into-a-bird/
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.cl.cam.ac.uk/research/srg/netos/xen/index.html
|
||||
[2]:http://www.cl.cam.ac.uk/research/srg/netos/xeno/
|
||||
[3]:http://www.techweekeurope.co.uk/news/verizon-public-cloud-launch-128724
|
||||
[4]:http://www.cs.rochester.edu/meetings/sosp2003/papers.shtml
|
||||
[5]:http://linuxconcloudopeneu2013.sched.org/event/68003c370760bcc2da7e3e8b59b6b50f
|
||||
[6]:http://linuxconcloudopeneu2013.sched.org/event/37ecfe02561cf264a02061d1927da26c
|
||||
[7]:http://linuxconcloudopeneu2013.sched.org/event/bdca1274d9799646cdf2934dbde94ccd
|
||||
[8]:http://www.linux.com/news/software/applications/742053-a-great-line-up-of-speakers-at-xen-project-developer-summit
|
@ -0,0 +1,50 @@
|
||||
10年 Xen:从恐龙进化到鸟类
|
||||
================================================================================
|
||||
Xen Hypervisor 项目原来是上世纪90年代末[剑桥大学][1] [Xenoserver][2] 项目的子项目。Xenoserver 有一个宏大的目标。
|
||||
|
||||
这个宏大目标就是建立一个大规模的分布式计算系统的公共基础框架。想像一下,当 Xenoserver 执行平台布署在全世界范围内,所有人都可以共享可执行代码,代码贡献者可以按代码被执行时产生的硬件消耗收取一定的费用。这将会鼓励负载均衡、消除单点瓶颈,甚至可以在这个平台上实现营利。
|
||||
|
||||
在今天,这种模式被称为“云计算”。而 Xen Hypervisor (确切来说是现在的 Xen Hypervisor)是最大的云平台。不仅亚马逊 Web 服务(AWS)和 Rackspace 公有云是基于 Xen 的,就连最近的大规模云平台[Verizon公有云][3]也将 Xen 作为他们的服务供应者。
|
||||
|
||||
### 10周岁生日快乐 ###
|
||||
|
||||
2003年10月21日,Xen Hypervisor 在[第19届 ACM 计算机原理研讨会][4]上作为一个开源项目首次出现在大众眼前。距今刚好过10年,在这里祝 Xen 项目生日快乐!
|
||||
|
||||
### 业界第一的劣势:像恐龙一样,不适者淘汰 ###
|
||||
|
||||
有时候在自己领域内成为第一个开源项目是一个劣势,为什么这样说?缺少与同行的交流会导致项目失去控制。简单的例子是,缺乏竞争会引发自满情绪,而这种情况已经在 Xen 项目内部发生了!开始几年 Xen 项目未受到任何约束,变得狭隘,不再寻求突破,致使用户和开发者不再对它感兴趣。当它的第一个竞争对手 KVM 出现并壮大,Xen 社区甚至对此反应迟缓。
|
||||
|
||||
这种反应带来的后果是,用户难以加入这个项目,并且这个项目不能很好地与 Linux 内核、QEMU及 Linux 发布版共处。然后,Xen 社区名声变坏。然后,Canonical 和 RedHat 抛弃 Xen,投向 KVM 怀抱。Xen 项目向这个不断改变的世界宣告了自己的失败。名声不断变臭,到后来它被视为开源社区界的恐龙,被彻底淘汰只是时间问题。
|
||||
|
||||
### 快速转型:从恐龙进化到鸟类 ###
|
||||
|
||||
像 Xen 一样能够从众多错误中回过神来的开源项目并不多,而 Xen 通过一系列措施做到了这一点。提出有效的管理方法、努力与其他开源项目合作、重启市场营销力量、踏踏实实与用户和开发者一起工作,这些努力终于让 Xen 获得新生。换句话说,Xen 已经完成从恐龙到鸟类的进化。如果你想知道我们是如何做到这点的,何不加入到我的 Linux 大会欧洲站的课题[Xen 项目:收获的教训][5]?其他你可能感兴趣的课题有[加强你的 Xen 云的安全][6]和[Xen:专为云设计的开源虚拟机管理程序][7]。
|
||||
|
||||

|
||||
|
||||
*展翅高飞(或者说,给 Xen 这只行动缓慢的熊猫插上翅膀)*
|
||||
|
||||
### 展望未来:虚拟化技术的新领域 ###
|
||||
|
||||
如果你正在搜索 Xen 项目,你会发现它的社区形式多样并且还在发展。从很多方面来说,它甚至比从前巅峰时期发展得更好。
|
||||
|
||||
现在 Xen 社区正在发生一些有意思的事情,一些 Xen 项目下的软件被用于非传统虚拟化技术。这也相应地为 Linux 社区增加了企业用户。在本周晚些时候开始的[Xen 项目开发者峰会][8]中我们将会见到两个安卓虚拟机如何运行在基于 Xen 的 Nexus 10 中,也会见到首次将 Xen 用于车载信息娱乐系统以及汽车应用系统中,同时我们还能见到 Xen 如何为诸如防火墙和NAT服务器这些中间体提供高性能应用。
|
||||
|
||||
当然,服务器虚拟化和云计算还有很长的路要走。展翅高飞吧(或者说,给 Xen 这只行动缓慢的熊猫插上翅膀)。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linux.com/news/enterprise/cloud-computing/743330-10-years-of-xen-transforming-a-dinosaur-into-a-bird/
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://www.cl.cam.ac.uk/research/srg/netos/xen/index.html
|
||||
[2]:http://www.cl.cam.ac.uk/research/srg/netos/xeno/
|
||||
[3]:http://www.techweekeurope.co.uk/news/verizon-public-cloud-launch-128724
|
||||
[4]:http://www.cs.rochester.edu/meetings/sosp2003/papers.shtml
|
||||
[5]:http://linuxconcloudopeneu2013.sched.org/event/68003c370760bcc2da7e3e8b59b6b50f
|
||||
[6]:http://linuxconcloudopeneu2013.sched.org/event/37ecfe02561cf264a02061d1927da26c
|
||||
[7]:http://linuxconcloudopeneu2013.sched.org/event/bdca1274d9799646cdf2934dbde94ccd
|
||||
[8]:http://www.linux.com/news/software/applications/742053-a-great-line-up-of-speakers-at-xen-project-developer-summit
|
@ -1,66 +0,0 @@
|
||||
KayGuoWhu翻译中
|
||||
使用安卓设备控制你的Linux PC
|
||||
================================================================================
|
||||
**下面的教程会指导所有的Linux使用者如何在系统上安装SSH,以便通过安卓智能手机远程访问他们的电脑。**
|
||||
|
||||

|
||||
如今我们所有人都拥有一台平板或出触屏手机,我们经常使用它们在深夜里看电影或电视秀,听歌或者阅读一本好书。你可以把这篇文章称作是为那些在大晚上因为太过疲惫而懒得去开启他们电脑上的某些应用程序,移动、删除,复制或重命名某些文件,甚至关掉PC的懒人们准备的教程。
|
||||
|
||||
的确,已经有各种各样的远程桌面解决方案,但是许多方案费用很高,或者实现效果很糟糕,无法像预期一样运行,迫使你最终还是得去电脑上做你原本想做的事情。
|
||||
|
||||
在这个教程里面,我们将使用一种简单、安全、高效的协议,它被称为SSH (Secure Shell),很容易从默认的软件仓库中安装(在Arch linx中是openssh,在Ubuntu中时openssh-server)。
|
||||
|
||||
### 配置SSH服务器 ###
|
||||
|
||||
在安装完成后,你需要为SSH服务器进行基本配置。为此,你需要使用文本编辑器编辑/etc/ssh/sshd_config这个文件。
|
||||
|
||||
1.在文件尾部添加下面一行(yourusername的地方会被你的Linux机器上真实的用户名代替)
|
||||
|
||||
AllowUsers yourusername
|
||||
|
||||
2.取消"#PermitRootLogin"这行注释,把"no"替换成"yes":
|
||||
|
||||
PermitRootLogin no
|
||||
|
||||
3.为了安全起见,你需要修改SSH 连接默认的port 22端口到一个更大编号的端口,譬如在我们的例子中是55441
|
||||
(但不要使用55441,这是初始的,找另一个四位或者五位数字)。因此,取消注释并编辑"#Port 22"如下:
|
||||
|
||||
Port 55441
|
||||
|
||||
### 开启SSH服务器###
|
||||
|
||||
在Ubuntu上,SSH服务通过下面的命令启动:
|
||||
|
||||
sudo /etc/init.d/ssh start
|
||||
|
||||
当你每次修改上述配置文件时,都需要通过下面的命令重启:
|
||||
|
||||
sudo /etc/init.d/ssh restart
|
||||
|
||||
在Arch Linux上,你可以使用下面的命令启动SSH服务:
|
||||
|
||||
sudo systemctl start sshd
|
||||
|
||||
### 配置安卓设备上的SSH客户端###
|
||||
|
||||
JuiceSSH似乎是安卓上最好的SSH客户端之一,而且是免费的。同时,如果你认为它的功能不好,可以花费少量的资金去获取更多高级的特性,譬如亚马逊 AWS/EC2 集成,团队协作,以及更多其它的特性。
|
||||
|
||||
一旦软件安装完毕,开启它,然后你会要求输入一个加密的密码以保证安全连接的安全。这个密码由WES-256进行加密,因此除非你的设备被偷,否则没有人能够获取他们。
|
||||
|
||||

|
||||
|
||||
现在,添加一个新连接,选择名称,你的电脑的IP地址,上面设定的端口号和一个需要被创建的身份。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
这就是我的Arch Linux盒子,可以通过我的安卓平板上的JuiceSSH客户端访问到。如果在这个教程中你遇到问题,请在下面进行评论。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://news.softpedia.com/news/How-to-Control-Your-Linux-PC-with-an-Android-Device-396004.shtml
|
||||
|
||||
译者:[KayGuoWhu](https://github.com/KayGuoWhu) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
@ -1,151 +0,0 @@
|
||||
08 Linux 内核: 配置内核(Part 4)
|
||||
================================================================================
|
||||

|
||||
|
||||
在“The Linux kernel: Configuring the Kernel”的第四部分里,我们将继续配置更多的设置和特性。
|
||||
|
||||
这里我们被问及关于"IBM Calgary IOMMU support (CALGARY_IOMMU)"。这个选项将会提供对IBM xSeries x366和x460的IOMMU的支持。这也将让那些32位PCI,这些系统上不支持双地址周期(DAC (Double Address Cycle))的设备正常运行,因为该系统设置在访问超过3GB内存的时候会有问题。如果需要这些IOMMU设备可以用"iommu=off"在启动时关闭。(这些内核/模块参数会在以后的文章中讨论)
|
||||
|
||||
IOMMU(input/output memory management unit)是一个内存管理单元(MMU),它连接具有DMA功能的I/O总线到主内存上。DMA(Direct Memory Access)是许多计算机支持的一种允许特定设备不借助CPU直接访问内存的特性。双地址周期(Double Address Cycle, DAC)是64位DMA;通常的DMA使用32位。
|
||||
|
||||
下面,我们被问及是否默认启用Calgary(Should Calgary be enabled by default? (CALGARY_IOMMU_ENABLED_BY_DEFAULT))。Calgary与上面提到的IOMMU是同一个概念。这两者之间的不同是IOMMU可以支持许多设备而Calgary只能支持IBM IOMMU设备。如果禁用了它但是以后需要使用到它,可以使用内核参数(iommu=calgary)。
|
||||
|
||||
这里有个问题需要小心处理(Enable Maximum number of SMP Processors and NUMA Nodes (MAXSMP))。只有在内核运行在拥有很多SMP处理器和NUMA节点的情况下如Core i7和许多AMD CPU芯片才启用它。如果系统缺乏或者只有少量的SMP处理器和NUMA节点,内核就会变得低效。这个最好选择"No"。
|
||||
|
||||
非一致性内存访问(Non-Uniform Memory Access (NUMA))是一个每部分内存都需要花费更长时间访问其他部分内存的系统。一个节点就是一组内存。例如,一个NUMA系统可能有三块内存芯片。每块芯片是一个节点。在带CPU的主板上有一个节点/芯片(这是最快的节点)。另外两个在不同的总线傻nag。这两个节点需要比第一个节点花费更长的时间去访问。
|
||||
|
||||
注意:ccNUMA和NUMA目前是相同的至少是非常相似的。
|
||||
|
||||
对称多处理器(Symmetric Multi-Processing (SMP))是NUMA的替代品。它的内存在同一根总线上。只有这么多的CPU可以访问总线,所以这限制了SMP系统上处理器的数量。然而它内存的访问速度一样块。
|
||||
|
||||
记住:我是在为AMD64系统在编译内核,所以我会告诉你我的选择来帮助读者理解过程和选择。如果我没有指出我的选择,那么我用的就是默认选择。如果你在为不同的系统编译或者你有不同的需求,你需要在你的情况下做出替代的选择。
|
||||
|
||||
接下来,除非配置工具已经为你做了选择,选择一个内核需要支持的最多CPU的数量。这个配置根据你给的数量优化内核。
|
||||
|
||||
接着启用或禁用"SMT (Hyperthreading) scheduler support (SCHED_SMT)"。SMT调度器提升了在使用了超线程技术的Pentium 4处理器上的CPU决策。然而,这会带来额外的功耗,在一些系统上最好像我一样选择"no"。
|
||||
|
||||
超线程一种专有的SMT并行微处理器(Intel 实现了它)。这是多任务/多线程(同时做许多任务)的一种特殊形式。同时多线程(Simultaneous multithreading (SMT))提升了多线程的效率。
|
||||
|
||||
在这之后,启用或者禁用"Multi-core scheduler support (SCHED_MC)"。这样也是一种提升多核CPU决策的特性。然而这回带来额外功耗。我选择了"No"。
|
||||
|
||||
在下一个选项中可以选择抢占式模式。
|
||||
|
||||
Preemption Model
|
||||
1. No Forced Preemption (Server) (PREEMPT_NONE)
|
||||
> 2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
|
||||
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT)
|
||||
choice[1-3]: 2
|
||||
|
||||
抢占就是暂停一个意图让它之后继续执行的中断任务的过程。抢占强制一个进程暂停。任务无法忽视抢占。
|
||||
|
||||
接着,我们被询问关于"Reroute for broken boot IRQs (X86_REROUTE_FOR_BROKEN_BOOT_IRQS)"。这是一个对于假中断的简单修复。假中断是一种不需要的硬件中断。这些通常是有电子干扰或者错误连接的电子产品触发。记住,中断是发送给处理器需要马上注意的信号。
|
||||
|
||||
这个选项对任何机器都很重要;我怀疑任何人可能都会有禁用这个特性的理由(Machine Check / overheating reporting (X86_MCE))。内核必须意识到过热和数据损坏,不然,系统将会继续操作,这样只会导致进一步的破坏。
|
||||
|
||||
下面,用户可以启用禁用"Intel MCE features (X86_MCE_INTEL)",这是一种额外的对像热度监控的Intel MCE特性的支持。因为我是为AMD64处理器编译内核所以我选择了"no"。机器检测异常(MCE)是一种当处理器发现硬件问题时的错误输出。MCE通常会导致内核严重错误(kernel panic)(相当于Windows中的"蓝屏")。
|
||||
|
||||
这个除了是AMD设备外是同一个问题Intel MCE features (X86_MCE_INTEL)。
|
||||
|
||||
下一个是我会禁用的调试特性(Machine check injector support (X86_MCE_INJECT))。这个会允许注射机检查。如果你偶尔执行机器注射,那最好编译成模块而不是编译进内核。机器注射可以使设备即使实际没有错误也可以发送一个错误信息。这个用来确认内核和其他进程可以正常处理错误。比如,如果CPU过热,接着应该关机,但是开发者如何在不损坏CPU的情况下测试代码。注射错误是一种最好的方法,因为它只是一种告诉硬件发送错误信号的软件。
|
||||
|
||||
注:模块是对可能被使用或者很少执行的特性/驱动而言的。只加入在许多使用该内核的系统中用到的特性/驱动到内核中。
|
||||
|
||||
如果内核很可能用在Dell笔记本上,那么启用这个特性(Dell laptop support (I8K))。否则,如果一些用户可能在戴尔笔记本电脑上使用这个内核,将其作为一个模块加入。如果这个内核不打算支持Dell笔记本,那就像我一样注释掉它。特别地,这个支持是一个允许Dell Inspiron 8000系列笔记本访问处理器的系统管理模式的驱动。系统管理模式的目的是得到处理器的温度和风扇状态,这对一些需要控制风扇的系统有用。
|
||||
|
||||
下面,用户可以选择微代码加载支持(CPU microcode loading support (MICROCODE))。这可以允许用户在支持这个特性的AMD或者Intel芯片上更新微代码。
|
||||
|
||||
注意:为了加载微代码,你必须拥有一个为你的处理器设计的合法的二进制微代码拷贝。
|
||||
|
||||
为了加载微代码补丁(修复bug或加入次要的特性)到intel芯片上(Intel microcode loading support (MICROCODE_INTEL)),这个必须启用。我禁用了它。
|
||||
|
||||
除了是AMD芯片外这个与上面的相同(AMD microcode loading support (MICROCODE_AMD))。
|
||||
|
||||
启用这个支持(/dev/cpu/*/msr - Model-specific register support (X86_MSR))可以允许某个处理器有权限使用x86特殊模块寄存器(Model-Specific Registers (MSRs))。这些寄存器是一些字符设备包括主要的202和次要的0到21((/dev/cpu/0/msr to /dev/cpu/31/msr))。这个特性用在多处理器系统上。每个虚拟字符设备都连接到一个特定的CPU。
|
||||
|
||||
注意:MSRs是用来改变CPU设备、调试、性能监控和执行追踪。MSRs使用x86指令集。
|
||||
|
||||
在这之后,我们有一个选项"CPU information support (X86_CPUID",启用这个特性允许处理器访问x86 CPUID指令,这需要通过字符设备在一个特定的CPU上执行。这些字符设备包括主要的202和次要的0到31(/dev/cpu/0/msr to /dev/cpu/31/msr),就像x86_MSR支持上面这些。
|
||||
|
||||
对于支持它的处理器,启用内核线性映射来使用1GB的页(Enable 1GB pages for kernel pagetables (DIRECT_GBPAGES))。启用这个可以帮助减轻TLB的压力。
|
||||
|
||||
页是内存本身的基本单位(位是数据的基本单位)。页的大小是由硬件自身决定的。页码表是虚拟和物理内存间的映射。物理内存是设备上的内存。虚拟内存是到内存的地址。依赖于系统架构,硬件可以访问大于实际内存地址的地址。举例来说,一个64位系统拥有6GB内存,管理员在需要时可以加上更多的内存。这是因为还有很多虚拟内存地址。然而,在很多32位系统上,系统管理员可以增加一条8GB的内存,但是系统无法完全使用它,因为系统中没有足够的虚拟内存地址去访问大容量的内存。转换后援缓冲器(Translation Lookaside Buffer (TLB))是一种提升虚拟内存转换速度的缓存系统。
|
||||
|
||||
下面,我们有了一个NUMA选项(Numa Memory Allocation and Scheduler Support (NUMA))。这可以允许内核在CPU本地内存分配器上分配CPU使用的内存。这个支持同样内核更好感知到NUMA。很少的32位系统需要这个特性,但是一些通用的645位处理器使用这个特性。我选择了"no"。
|
||||
|
||||
|
||||
为了系统使用旧方式来检测AMD NUMA节点拓扑,启用这个特性feature (Old style AMD Opteron NUMA detection (AMD_NUMA))。下一个选项是一种更新的检测方式(ACPI NUMA detection (X86_64_ACPI_NUMA))。如果两个都启用,新的方式将会占支配作用。一些硬件在使用其中一种方式而不是另外一个时工作得更好。
|
||||
|
||||
至于为了调试目的的NUMA仿真,启用下一个特性(NUMA emulation (NUMA_EMU))。
|
||||
|
||||
注意:如果你不打算调试并且你需要一个快速、轻量级系统,那么禁用尽可能多的调试特性。
|
||||
|
||||
下一个选项中,选择你的内核打算如何处理NUMA节点的最大数量。接下来选择内存模型。这里可能只有一个内存模型选择。内存模型指定了内存如何存储。
|
||||
|
||||
Maximum NUMA Nodes (as a power of 2) (NODES_SHIFT) [6]
|
||||
Memory model
|
||||
> 1. Sparse Memory (SPARSEMEM_MANUAL)
|
||||
choice[1]: 1
|
||||
|
||||
为了有助于性能,这里有一个选项用通过虚拟内存映射(Sparse Memory virtual memmap (SPARSEMEM_VMEMMAP))来优化pfn_to_page和page_to_pfn操作。页帧号是每页被给定的号码。这两个操作用来从号码得到页或者从页得到号码。
|
||||
|
||||
下一个选项是允许一个节点可以移除内存(Enable to assign a node which has only movable memory (MOVABLE_NODE))。内核页通常无法移除。当启用后,用户可以热插拔内存节点。同样可移除内存允许内存整理。作为出入内存的数据,只要有可用空间一组数据可能被划分到不同内存。
|
||||
|
||||
接着前面的内存问题,我们还有更多的问题。这些可能已被配置工具预配置了。第三个选项(BALLOON_COMPACTION),当启用时可以帮助减少内存碎片。碎片内存会减慢系统速度。第四个选项(COMPACTION)允许内存压缩。下面列到的第五个选项(MIGRATION)允许页面被移动。
|
||||
|
||||
Allow for memory hot-add (MEMORY_HOTPLUG)
|
||||
Allow for memory hot remove (MEMORY_HOTREMOVE)
|
||||
Allow for balloon memory compaction/migration (BALLOON_COMPACTION)
|
||||
Allow for memory compaction ()
|
||||
Page migration (MIGRATION)
|
||||
|
||||
注意:启用可移动内存会启用以上5个特性。
|
||||
|
||||
下一步,我们可以"Enable KSM for page merging (KSM)"。内核同页合并(Kernel Samepage Merging (KSM))会查看程序认为可以合并的内核。如果两页内存完全相同这可以节约内存。一块内存可以被删除或者被合并,并且只有一块可以使用。
|
||||
|
||||
配置工具可能会自动选择使用多少内存保存用户分配(Low address space to protect from user allocation (DEFAULT_MMAP_MIN_ADDR) [65536])。
|
||||
|
||||
下一个选项很重要(Enable recovery from hardware memory errors (MEMORY_FAILURE))。如果内存故障并且系统有MCA恢复或者ECC内存,系统就可以继续运行并且恢复。要有这个特性,硬件自身和内核都必须支持。
|
||||
|
||||
机器检测架构(Machine Check Architecture (MCA))是一个一些CPU上可以发送硬件错误信息给操作系统的特性。错误更正码内存(Error-correcting code memory (ECC memory))是一种内存设备检测和纠正错误的形式。
|
||||
|
||||
下面,配置工具会自动启用"HWPoison pages injector (HWPOISON_INJECT)"。这个特性允许内核标记一块坏页为"poisoned",接着内核会杀死创建坏页的程序。这有助于停止并纠正错误。
|
||||
|
||||
为了允许内核使用大页(Transparent Hugepage Support (TRANSPARENT_HUGEPAGE)),启用这个特性。这可以加速系统但是需要更多内存。嵌入式系统不必使用这个特性。嵌入式系统通常只有非常小的内存。
|
||||
|
||||
如果启用了上面的,那么巨大页的sysfs支持必须配置。
|
||||
|
||||
Transparent Hugepage Support sysfs defaults
|
||||
1. always (TRANSPARENT_HUGEPAGE_ALWAYS)
|
||||
> 2. madvise (TRANSPARENT_HUGEPAGE_MADVISE)
|
||||
choice[1-2?]: 2
|
||||
|
||||
下面的选项是增加process_vm_readv和process_vm_writev这两个系统调用(Cross Memory Support (CROSS_MEMORY_ATTACH))。这允许特权进程访问另外一个程序的地址空间。
|
||||
|
||||
如果有tmem,启用缓存清理(cleancache)通常是一个好主意 (Enable cleancache driver to cache clean pages if Transcendent Memory (tmem) is present (CLEANCACHE))。当一些内存页需要从内存中移除时,cleancache会将页面放在cleancache-enabled的文件系统上。当需要该页时,页会被重新放回内存中。超绝记忆体(tmem)没有一组一直大小的内存。内核对此内存使用间接寻址。
|
||||
|
||||
下一个选项允许在tmen激活后缓存交换页(Enable frontswap to cache swap pages if tmem is present (FRONTSWAP))。frontswap在交换分区放置数据。交换特性的支持需要这个。超绝记忆体
|
||||
|
||||
最好启用下一个特性(Check for low memory corruption (X86_CHECK_BIOS_CORRUPTION))。这会检测低位内存的内存损坏情况。这个特性在执行期被禁止。为了启用这个特性,在内核命令行内加入"memory_corruption_check=1"(这会在以后的文章中讨论;这不同于任何命令行)。即使经常执行这个特性,也只使用非常小的开销(接近没有)。
|
||||
|
||||
接下来我门可以设置内存损坏检测的默认设置(“Set the default setting of memory_corruption_check (X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK))。这可以选择是否开启或关闭memory_corruption_check。最好启用内存损坏检测不然如果一部分重要内存损坏后可能会导致数据丢失和系统崩溃。
|
||||
|
||||
这个选项关注的是BIOS(Amount of low memory, in kilobytes, to reserve for the BIOS (X86_RESERVE_LOW) [64])。配置工具通常知道给BIOS预留内存的最佳大小。
|
||||
|
||||
对于Intel P6处理器,开发者可以启用存储区域类型寄存器(MTRR (Memory Type Range Register) support (MTRR))。这用于连接着VGA卡的AGP和PCI卡。启用这个特性内核会创建/proc/mtrr。
|
||||
|
||||
如果X驱动需要加入回写入口,那么启用下面的选项(MTRR cleanup support (MTRR_SANITIZER))。这会将MTRR的布局从连续转换到离散。存储区域类型寄存器(Memory type range registers (MTRRs))提供了一种软件访问CPU缓存的方法。
|
||||
|
||||
下面,配置工具已经设置了一些MTRR选项
|
||||
|
||||
MTRR cleanup enable value (0-1) (MTRR_SANITIZER_ENABLE_DEFAULT) [1]
|
||||
MTRR cleanup spare reg num (0-7) (MTRR_SANITIZER_SPARE_REG_NR_DEFAULT) [1]
|
||||
|
||||
为了设置页级缓冲控制,那就启用PAT属性(x86 PAT support (X86_PAT))。页属性表(Page Attribute Table (PATs))是现在版的MTRRs并比它更灵活。如果你经历过因启用它而引发的启动问题,那么禁用这个特性后重新编译内核。我选择了"no"。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-4.4392/
|
||||
|
||||
译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
Loading…
Reference in New Issue
Block a user