史上最全linux内核配置详解
linux内核启用参数
linux内核启用参数Linux内核启用参数是指在Linux系统启动时,可以通过设置参数来改变内核的行为和配置。
这些参数可以通过修改启动脚本或者在引导时通过命令行参数传递给内核。
我们来介绍一些常用的Linux内核启用参数。
1. root:指定根文件系统所在的设备或分区。
在启动时,内核会将根文件系统挂载到这个设备上,成为系统的根目录。
可以使用设备名称(如/dev/sda1)或者UUID(Universally Unique Identifier)来指定。
2. init:指定系统初始化进程的路径。
这个进程是系统启动后的第一个用户空间进程,负责初始化系统环境、启动其他进程等。
一般情况下,它的路径是/bin/init。
3. quiet:禁用内核启动时的冗长输出信息。
默认情况下,内核会将启动过程中的详细信息输出到控制台上,使用quiet参数可以减少这些输出,使启动过程更加简洁。
4. vga:指定启动时的图形模式。
可以通过设置不同的参数值来改变显示分辨率和颜色深度。
例如,vga=791表示使用1024x768分辨率,颜色深度为16位。
5. acpi:启用或禁用ACPI(Advanced Configuration and PowerInterface)功能。
ACPI是一种能够管理电源、温度、风扇等硬件的标准,通过设置acpi参数,可以控制是否启用ACPI功能。
6. noapic:禁用APIC(Advanced Programmable Interrupt Controller)功能。
APIC是用于处理系统中断的硬件设备,通过设置noapic参数,可以禁用APIC功能,解决一些不兼容的硬件问题。
7. nomodeset:禁用内核对图形模式的自动设置。
有些显卡驱动在启动时可能会导致系统冻结或无法启动,通过设置nomodeset参数,可以强制内核使用基本的VGA模式运行。
8. mem:指定系统可用的物理内存大小。
linux系统内核结构详解
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。
1.进程调度(SCHED):控制进程对CPU的访问。
当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。
可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。
Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
2.内存管理(MM)允许多个进程安全的共享主内存区域。
Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。
必要时,操作系统负责在磁盘和内存间交换程序块。
内存管理从逻辑上分为硬件无关部分和硬件有关部分。
硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。
3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。
虚拟文件系统可以分为逻辑文件系统和设备驱动程序。
逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。
4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。
网络接口可分为网络协议和网络驱动程序。
网络协议部分负责实现每一种可能的网络传输协议。
网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。
5.进程间通讯(IPC) 支持进程间各种通信机制。
处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。
一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。
例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。
Linux 内核网络参数配置资料
Linux 内核网络参数配置资料=================================================================== ==Linux系统内核中网络参数的意义及其应用(1)在Linux中,我们可以根据不同的需求来调整/proc/sys/net/ipv4/目录下的内核网络参数,通过合理的配置这里内核网络参数,从而达到提高网络的安全性和系统的稳定性的目的。
因为这方面的文献比较少,所以我们不可能进行全面的介绍。
现在已经有linux组织正在从事这方面的文档的写作,相信在不久的将来,我们就会看到比较完整的文档。
下面我们就来看一看一些比较常用的内核网络参数。
注意:1.参数值带有速度(rate)的参数不能在loopback接口上工作。
2.因为内核是以HZ为单位的内部时钟来定义速度的,通常速度为100HZ,所以设定一个参数值为100就表示允许1个包/秒,假如为20则允许5个包/秒。
3.所有内核网络参数配置文件位于/proc/sys/net/ipv4/目录下。
一、icmp相关内核配置参数概述:通常我们使用icmp包来探测目的主机上的其它协议(如tcp和udp)是否可用。
比如包含“destination unreachable”信息的icmp包就是最常见的icmp包。
◆1.icmp_destunreach_rate:设置内容为“Destination Unreachable”icmp包的响应速率。
设置值应为整数。
应用实例:假设有A、B两部主机,首先我们在主机A上执行以下ipchains语句:ipchains -A input -p icmp -j REJECT这里的REJECT和DENY不同,DENY会丢掉符合条件的包如同没有接收到该包一样,而REJECT会在丢掉该包的同时给请求主机发回一个“Destination Unreachable”的icmp。
然后在主机B上ping主机A,这时候我们会发现“Destination Unreachable”icmp包的响应速度是很及时的。
linux 配置参数
linux 配置参数Linux配置参数Linux是一种自由和开放源代码的操作系统,广泛应用于服务器和个人计算机领域。
在Linux系统中,通过配置参数可以对系统进行各种设置和调整,以满足不同用户的需求。
本文将介绍Linux中一些常见的配置参数及其使用方法。
1. 网络配置参数在Linux系统中,网络配置参数用于设置网络连接和通信。
常见的网络配置参数包括IP地址、子网掩码、网关、DNS服务器等。
通过修改这些参数,可以实现网络连接的配置和调整。
2. 内核参数内核参数是用于配置Linux内核行为的设置。
通过修改内核参数,可以改变系统的性能、安全性和稳定性等方面的表现。
常见的内核参数包括文件系统参数、内存管理参数、网络协议参数等。
3. 文件系统参数文件系统参数是用于配置文件系统行为的设置。
通过修改文件系统参数,可以改变文件系统的读写速度、容量限制、权限控制等。
常见的文件系统参数包括文件系统类型、磁盘配额、文件权限等。
4. 安全性配置参数安全性配置参数用于设置系统的安全性措施和策略。
通过修改安全性配置参数,可以增强系统的抵御攻击和保护用户数据的能力。
常见的安全性配置参数包括用户权限、访问控制、防火墙设置等。
5. 硬件配置参数硬件配置参数用于设置系统与硬件设备之间的通信和交互。
通过修改硬件配置参数,可以优化硬件设备的使用效果和性能表现。
常见的硬件配置参数包括CPU频率、内存大小、硬盘容量等。
6. 日志配置参数日志配置参数用于设置系统的日志记录和管理。
通过修改日志配置参数,可以控制系统的日志记录方式、级别和存储位置。
常见的日志配置参数包括日志文件大小、日志级别、日志存储位置等。
7. 服务配置参数服务配置参数用于设置系统中运行的各种服务和进程。
通过修改服务配置参数,可以调整服务的运行方式和行为。
常见的服务配置参数包括启动顺序、运行级别、资源限制等。
8. 软件包配置参数软件包配置参数用于设置系统中安装的软件包的行为和功能。
linux操作系统配置流程-解释及详细步骤
linux操作系统配置流程-解释及详细步骤1.引言1.1 概述概述Linux操作系统是一种自由和开放源代码的操作系统,它由世界各地的志愿者共同开发和维护。
Linux操作系统以其稳定性、安全性和灵活性而闻名,并在各个领域广泛应用。
本文将介绍Linux操作系统的配置流程,帮助读者了解如何在自己的计算机上配置Linux系统。
配置Linux操作系统的过程可以根据个人需求进行定制,包括选择适合的发行版、安装必要的软件和组件,以及进行各种设置和优化。
在配置Linux操作系统之前,读者需要做好准备工作,包括备份重要数据、了解自己的计算机硬件配置和选择合适的Linux发行版。
然后,可以按照本文提供的步骤进行Linux操作系统的安装。
安装完成后,读者还可以根据自己的需求进行各种设置和调整,以满足个性化的需求。
通过本文的学习,读者将能够掌握Linux操作系统的配置流程,了解如何安装和设置Linux系统,并在自己的计算机上轻松运行和使用Linux 操作系统。
在配置过程中,读者也可以进一步深入学习Linux操作系统的原理和功能,提升自己在Linux领域的技能和知识。
总之,本文将为读者提供一个全面而详细的Linux操作系统配置指南,帮助读者顺利完成Linux系统的配置,享受Linux操作系统所带来的便利和优势。
希望本文能够对读者有所帮助,引领读者进入Linux世界,探索更多有趣和有用的技术。
1.2 文章结构文章结构部分的内容可以描述本文按照以下章节进行展开:2. 正文2.1 准备工作2.2 安装Linux操作系统在本文的正文部分,将侧重介绍Linux操作系统的配置流程。
首先,在准备工作中,我们将介绍在开始配置Linux操作系统之前需要做的一些准备工作。
这些准备工作包括确定所使用的Linux发行版、获取所需的安装介质、了解系统硬件要求、准备必要的安装文件等。
在2.1 准备工作部分,我们将详细介绍这些步骤,并提供一些建议和技巧。
Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
printk(KERN_WARNING fmt, ##arg) printk(KERN_DEBUG fmt, ##arg)
/* Module Init & Exit function */ static int __init myModule_init(void) {
/* Module init code */ PRINTK("myModule_init\n"); return 0;
图形
工具
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍 了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成
那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢? 我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下 界面:
首页 业界 移动 云计算 研发 论坛 博客 下载 更多
process的专栏
您还未登录!| 登录 | 注册 | 帮助
个人资料
dianhuiren
访问:71424次 积分:1219分 排名:第8764名 原创:37篇 转载:127篇 译文:0篇 评论:3条
目录视图
摘要视图
订阅
《这些年,我们读过的技术经典图书》主题有奖征文 经理
这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文
/dianhuiren/article/details/6917132
1/5
2012年04月 (6) 2012年03月 (15) 2012年02月 (16)
并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般 的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。
Linux内核架构和工作原理详解
Linux内核架构和工作原理详解作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
目前支持模块的动态装卸(裁剪)。
Linux内核就是基于这个策略实现的。
Linux 进程采用层次结构,每个进程都依赖于一个父进程。
内核启动init程序作为第一个进程。
该进程负责进一步的系统初始化操作。
init进程是进程树的根,所有的进程都直接或者间接起源于该进程。
virt/ ---- 提供虚拟机技术的支持。
Linux内核预备工作理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念Linux内核的任务:1.从技术层面讲,内核是硬件与软件之间的一个中间层。
作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。
在实际工作中内核抽象了相关细节。
3.内核是一个资源管理程序。
负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
4.内核就像一个库,提供了一组面向系统的命令。
系统调用对于应用程序来说,就像调用普通函数一样。
内核实现策略:1.微内核。
最基本的功能由中央内核(微内核)实现。
所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。
2.宏内核。
内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。
内核中的每一个函数都可以访问到内核中所有其他部分。
目前支持模块的动态装卸(裁剪)。
Linux内核就是基于这个策略实现的。
哪些地方用到了内核机制?1.进程(在cpu的虚拟内存中分配地址空间,各个进程的地址空间完全独立;同时执行的进程数最多不超过cpu数目)之间进行通信,需要使用特定的内核机制。
Linux内核编译配置选项详解
Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择General setup常规设置Local version - append to kernel release在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到Automatically append version information to the version string 自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持Support for paging of anonymous memory (swap)使用交换分区或者交换文件来做为虚拟内存System V IPCSystem V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么IPC NamespacesIPC命名空间支持,不确定可以不选POSIX Message QueuesPOSIX消息队列,这是POSIX IPC中的一部分BSD Process Accounting将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息BSD Process Accounting version 3 file format使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式Export task/process statistics through netlink通过netlink接 口向用户空间导出任务/进程的统计信息,与BSDProcess Accounting的不同之处在于这些统计信息在整个 任务/进程生存期 都是可用的Enable per-task delay accounting在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间UTS NamespacesUTS名字空间支持,不确定可以不选Auditing support审计支持,某些内 核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审 计Enable system-call auditing support支持对系统调用的审计Kernel .config support把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息Enable access to .config through /proc/config.gz允许通过/proc/config.gz访问内核的配置信息Cpuset support只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它Kernel->user space relay support (formerly relayfs)在某些文件系统上(比 如debugfs)提 供从内核空间向用户空间传递大量数据的接口Initramfs source file(s)initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白Optimize for size (Look out for broken compilers!)编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码Enable extended accounting over taskstats收集额外的进程统计信息并通过taskstats接口发送到用户空间Configure standard kernel features (for small systems)配置标准的内核特性(为小型系统)Enable 16-bit UID system calls允许对UID系统 调用进行过时的16-bit包装Sysctl syscall support不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量Load all symbols for debugging/kksymoops装载所有的调试符号表信息,仅供调试时选择Include all symbols in kallsyms在kallsyms中 包含内核知道的所有符号,内核将会增大300KDo an extra kallsyms pass除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项Support for hot-pluggable devices支持热插拔设备,如usb与pc卡等,Udev也需要它Enable support for printk允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择BUG() support显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略 Enable ELF core dumps内存转储支持,可 以帮助调试ELF格 式的程序Enable full-sized data structures for core在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能Enable futex support快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序Enable eventpoll support支持事件轮循的系统调用Use full shmem filesystem完全使用shmem来 代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多Use full SLAB allocator使用SLAB完全 取代SLOB进行 内存分配,SLAB是 一种优秀的内存分配管理器,推荐使用Enable VM event counters for /proc/vmstat允许在/proc/vmstat中包含虚拟内存事件记数器Loadable module support可加载模块支持Enable loadable module support打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中Module unloading允许卸载已经加载的模块Forced module unloading允许强制卸载正在使用中的模块(比较危险)Module versioning support允许使用其他内核版本的模块(可能会出问题)Source checksum for all modules为所有的模块校验源码,如果你不是自己编写内核模块就不需要它Automatic kernel module loading让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系Block layer块设备层Enable the block layer块设备支持,使用 硬盘/USB/SCSI设备者必选Support for Large Block Devices仅在使用大于2TB的 块设备时需要Support for tracing block io actions块队列IO跟踪支 持,它允许用户查 看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据Support for Large Single Files仅在可能使用大于2TB的文件时需要IO SchedulersIO调度器Anticipatory I/O scheduler假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)Deadline I/O scheduler使用轮询的调度器,简 洁小巧,提供了最 小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)CFQ I/O scheduler使用QoS策略为 所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统Default I/O scheduler默认IO调度器Bus options (PCI, PCMCIA, EISA, MCA, ISA)总线选项PCI supportPCI支持,如果使用了PCI或PCI Express设备就必选PCI access modePCI访问模式,强列建议选"Any"(系统将优先使用"MMConfig",然后使用"BIOS",最后使用"Direct"检测PCI设备)PCI Express supportPCI Express支持(目前主要用于显卡和千兆网卡)PCI Express Hotplug driver如果你的主板和设备都支持PCI Express热插拔就可以选上Use polling mechanism for hot-plug events对热插拔事件采用轮询机制,仅用于测试目的Root Port Advanced Error Reporting support由PCI Express AER驱动程序处理发送到Root Port的错误信息Message Signaled Interrupts (MSI and MSI-X)PCI Express支持两类中断:INTx使用传统的IRQ中断,可以与现行的PCI总线的驱动程序和操作系统兼容;MSI则是通过inbound Memory Write触发和发送中断,更适合多CPU系统.可以使用"pci=nomsi"内核引导参数关闭MSIPCI Debugging将PCI调试信息 输出到系统日志里Interrupts on hypertransport devices允许本地的hypertransport设备使用中断ISA support现在基本上没有ISA的设备了,如果你有就选吧MCA support微通道总线,老旧 的IBM的台式机 和笔记本上可能会有这种总线NatSemi SCx200 support在使用AMD Geode处理器的机器上才可能有PCCARD (PCMCIA/CardBus) supportPCMCIA卡(主要用于笔记本)支持Enable PCCARD debugging仅供调试16-bit PCMCIA support一些老的PCMCIA卡使用16位的CardBus32-bit CardBus support当前的PCMCIA卡 基本上都是32位 的CardBusCardBus yenta-compatible bridge support使用PCMCIA卡 的基本上都需要选择这一项,子项请按照自己实际使用的PCMCIA卡选择{省略的部分请按照自己实际使用的PCMCIA卡选择}PCI Hotplug SupportPCI热插拔支持,如果你有这样的设备就到子项中去选吧Cryptographic options加密选项Cryptographic API提供核心的加密API支持.这 里的加密算法被广泛的应用于驱动程序通信协议等机制中.子选项可以全不选,内核中若有其他部分依赖它,会自动选上Cryptographic algorithm manager创建加密模版实例,必 须要选HMAC support为IPSec所必 须,可为PPPoE提供压缩支持XCBC supportKeyed-Hashing with encryption algorithmKeyed-Hashing用加密算法Null algorithmsNULL加密算法(什么也不做),用于IPsec协议的封装安全载荷模块(ESP)MD4 digest algorithm老旧的摘要算法,已 经过时MD5 digest algorithm主流摘要算法,128位(已 被中国山东大学王小云攻破,可以快速找到碰撞)SHA1 digest algorithm主流摘要算法,160位(已 被中国山东大学王小云攻破,可以快速找到碰撞),速度与MD5相当SHA256 digest algorithm更好的摘要算法,256位,速 度较SHA1稍慢SHA384 and SHA512 digest algorithms更好的摘要算法,384/512位,速度大约只有SHA1的40-50%Whirlpool digest algorithms最安全的摘要算法,512位,已 被列入ISO标准,目前最新版本为3.0(2003年发布)Tiger digest algorithms号称最快的摘要算法,192位,专 门为64位CPU进行了优化GF(2^128) multiplication functions吉安卡洛-费斯切拉(2 ^ 128)乘法的功能Efficient table driven implementation of multiplications field GF(2^128). This is needed by some cypher modes. T option will be selected automatically if you select such cipher mode. Only select this option by hand if you exp an external module that requires these functionsECB support电子密码本,最简 单的加密方法CBC support密码块链,IPSec需要使用它PCBC supportPCBC: Propagating Cipher Block Chaining mode . This block cipher algorithm is required for RxRPC.LRW supportLRW: Liskov Rivest Wagner, a tweakable, non malleable, nnarrow block cipher mode for dm-crypt. Use it with ciph specification string aes-lrw-benbi, the key must be 256,The first 128, 192 or 256 bits in the key are used for A rest is used to tie each cipher block to its logical posSoftware async crypto daemonThis is a generic software asynchronous crypto daemon thconverts an arbitrary synchronous software crypto algori into an asynchronous algorithm that executes in a kernel。
Linux操作系统修改内核参数的三种方法详细说明
Linux操作系统修改内核参数的三种方法详细说明linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三种方式:修改 /etc/sysctl.conf 文件;在文件中加入配置项,格式为 key = value,保存修改后的文件,执行命令 sysctl -p 加载新配置。
使用 sysctl 命令临时修改;如:sysctl -w net.ipv4.tcp_mem = “379008 505344 758016”直接修改/proc/sys/ 目录中的文件。
如:echo “379008 505344 758016” 》 /proc/sys/net/ipv4/tcp_mem 注意:第一种方式在重启操作系统后自动永久生效;第二种和第三种方式在重启后失效。
内核参数kernel.core_uses_pi d = 1core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展名。
设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为core.xxx;设置为0(默认),表示生成的 core 文件统一命名为 core。
kernel.core_pat te rn = corecore_pattern 可以控制 core 文件的保存位置和文件格式。
如:kernel.core_pattern = “/corefile/core-%e-%p-%t”,表示将core 文件统一生成到 /corefile 目录下,产生的文件名为 core-命令名-pid-时间戳。
以下是参数列表:%p - insert pid into filename 添加 pid%u - insert current uid into filename 添加当前 uid%g - insert current gid into filename 添加当前 gid%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号%t - insert UNIX ti me that the coredump occurred into filename 添加 core 文件生成时的 unix 时间%h - insert hostname where the coredump happened into filename 添加主机名%e - insert coredumping executable name into filename 添加命令名kernel.msgmax = 8192进程间的消息传递是在内核的内存中进行的。
Linux内核参数优化
Linux内核参数优化1.调整内核启动参数:在引导过程中,可以使用GRUB或LILO等引导加载器来设置内核启动参数。
通过修改/etc/default/grub文件(对于使用GRUB的情况),或修改/etc/lilo.conf文件(对于使用LILO的情况),可以设置内核启动参数。
常见的内核启动参数包括init=/bin/bash(在系统启动时使用bash作为init进程)和max_loop=256(增加文件系统挂载的最大数量)。
2.调整内存管理参数:修改/etc/sysctl.conf文件,可以调整与内存管理相关的内核参数。
例如,可以增加vm.swappiness=10来减少交换空间的使用,提高系统性能。
3.调整文件系统参数:修改/etc/fstab文件,可以设置文件系统的挂载选项。
使用noatime选项可以减少磁盘I/O操作,提高系统性能。
4.调整网络参数:修改/etc/sysctl.conf文件,可以调整与网络相关的内核参数。
例如,可以增加net.ipv4.tcp_tw_reuse=1和net.ipv4.tcp_fin_timeout=30来优化TCP连接。
5.启用硬件加速:根据硬件配置,启用硬件加速可以显著提高系统性能。
例如,对于使用Intel或AMD处理器的系统,可以启用CPU硬件虚拟化支持。
6.关闭不必要的内核模块和服务:禁用不需要的内核模块和服务可以减少系统的资源占用,提高性能。
使用工具如lsmod和systemctl可以查看已加载的内核模块和服务状态。
7.更新内核版本:保持内核版本最新是提高系统性能和安全性的重要步骤。
使用包管理器如apt、yum或dnf可以更新内核和其他系统组件。
8.配置SELinux和AppArmor:SELinux和AppArmor是Linux的强制访问控制机制,可以提供更高的系统安全性。
根据需要配置SELinux或AppArmor的策略,并调整相关的内核参数。
Linux终端命令系统内核参数配置
Linux终端命令系统内核参数配置Linux作为一种强大而灵活的操作系统,其内核参数配置对于系统性能的优化和调整至关重要。
系统内核参数的配置可以影响到操作系统的性能、稳定性和安全性,因此正确地配置和优化内核参数是保证系统正常运行的重要一环。
本文将介绍Linux终端命令下的系统内核参数配置方法,以帮助读者深入了解和灵活应用这些配置参数。
1. 如何查看当前系统的内核参数配置在Linux终端下,可以运行以下命令查看当前系统的内核参数配置:```sysctl -a```该命令会列出所有的内核参数及其当前值。
通过查看当前配置,我们可以了解系统的默认值,以便后续的优化和调整。
2. 内核参数配置文件Linux系统的内核参数配置都保存在/sys/目录下的各个文件中。
这些文件可以通过编辑文本文件的方式进行修改。
例如,要修改TCP连接的超时时间,可以编辑/sys/net/ipv4/tcp_keepalive_time文件:```vi /sys/net/ipv4/tcp_keepalive_time```3. 修改内核参数的方法3.1 临时修改法在终端中使用sysctl命令可以临时修改某个内核参数的值。
例如,要修改内核的TCP连接超时时间,可以运行以下命令:```sysctl -w net.ipv4.tcp_keepalive_time=300```3.2 永久修改法如果要永久修改某个内核参数的值,需要修改对应的配置文件。
常用的配置文件有:- /etc/sysctl.conf:针对整个系统设定的内核参数配置文件。
- /etc/sysctl.d/:目录下可以放置多个以.conf为后缀名的配置文件,每个文件中可以配置多个内核参数。
以编辑/etc/sysctl.conf为例,可以使用vi或其他编辑器打开该文件,然后在文件中添加或修改需要的内核参数配置,保存文件后重启系统以使配置生效。
4. 常见的内核参数配置案例4.1 调整TCP连接参数TCP连接参数对于网络传输的性能和稳定性非常重要。
linux内核教程
linux内核教程Linux内核是操作系统的核心部分,负责管理硬件资源,提供系统调用接口,并且协调各种软件和硬件之间的通信。
本文将简要介绍Linux内核的组成和功能。
Linux内核由多个模块组成,包括进程调度、文件系统、网络协议栈等,每个模块都承担着不同的任务。
进程调度模块负责根据优先级和调度策略来分配CPU时间片给不同的进程,以保证系统的平稳运行。
文件系统模块则负责对文件进行管理,包括文件的读写、权限管理等。
网络协议栈模块则负责实现各种网络协议,使得Linux系统能够进行网络通信。
除了上述基本模块外,Linux内核还具备一些高级功能。
例如,内存管理模块负责管理系统的物理内存和虚拟内存,包括内存的分配和释放、页面置换等。
设备驱动模块负责与硬件设备进行通信,为用户提供访问硬件的接口。
系统调用模块则负责提供系统调用接口给应用程序,使得应用程序可以访问内核提供的功能。
Linux内核使用C语言编写,具有很高的可移植性。
其代码主要分为内核部分和驱动部分。
内核部分包含了操作系统的核心逻辑,而驱动部分则包含了针对特定硬件设备的代码。
内核的代码被组织成多个模块,每个模块负责实现某个功能。
这种模块化的设计使得内核可以相对独立地进行扩展和维护。
Linux内核的开发和维护由一个庞大的社区共同进行。
开发者可以通过邮件列表和代码仓库来分享和讨论彼此的代码,从而推动内核的发展。
内核的发布和更新也遵循着一定的版本号规则,以便用户能够方便地选择和升级内核。
总结起来,Linux内核是操作系统最关键的部分,负责管理和协调系统的各个组件。
其具有良好的可移植性和模块化设计,可以方便地进行扩展和维护。
通过整个开发社区的共同努力,Linux内核能够不断地得到更新和改进,为用户提供更好的使用体验。
linux内核配置make_menuconfig菜单详解
linux内核配置make menuconfig菜单详解前言一、配置系统的基本结构Linux内核的配置系统由三个部分组成,分别是:1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义Linux 内核的编译规则;2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。
这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。
本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。
所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。
二、makefile menuconfig过程讲解当我们在执行make menuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linux内核根目录下的scripts文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linux内核根目录下的makefile文件、各层目录下的makefile文件Linux内核根目录下的的.config文件、arm/$ARCH/下的config文件Linux内核根目录下的 include/generated/autoconf.h文件1)scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容2)当我们执行make menuconfig命令出现上述蓝色配置界面以前,系统帮我们做了以下工作:首先系统会读取arch/$ARCH/目录下的Kconfig文件生成整个配置界面选项(Kconfig是整个linux配置机制的核心),那么ARCH环境变量的值等于多少呢?它是由linux内核根目录下的makefile文件决定的,在makefile下有此环境变量的定义:或者通过 make ARCH=arm menuconfig命令来生成配置界面,默认生成的界面是所有参数都是没有值的比如教务处进行考试,考试科数可能有外语、语文、数学等科,这里相当于我们选择了arm科可进行考试,系统就会读取arm/arm/kconfig文件生成配置选项(选择了arm科的卷子),系统还提供了x86科、milps科等10几门功课的考试题3)假设教务处比较“仁慈”,为了怕某些同学做不错试题,还给我们准备了一份参考答案(默认配置选项),存放在arch/$ARCH/configs下,对于arm科来说就是arch/arm/configs 文件夹:此文件夹中有许多选项,系统会读取哪个呢?内核默认会读取linux内核根目录下.config文件作为内核的默认选项(试题的参考答案),我们一般会根据开发板的类型从中选取一个与我们开发板最接近的系列到Linux内核根目录下(选择一个最接近的参考答案)#cp arch/arm/configs/s3c2410_defconfig .config4).config假设教务处留了一个心眼,他提供的参考答案并不完全正确(.config 文件与我们的板子并不是完全匹配),这时我们可以选择直接修改.config文件然后执行make menuconfig命令读取新的选项但是一般我们不采取这个方案,我们选择在配置界面中通过空格、esc、回车选择某些选项选中或者不选中,最后保存退出的时候,Linux内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行make distclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/configs下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.5)经过以上两步,我们可以正确的读取、配置我们需要的界面了那么他们如何跟makefile文件建立编译关系呢?当你保存make menuconfig选项时,系统会除了会自动更新.config外,还会将所有的选项以宏的形式保存在Linux内核根目录下的include/generated/autoconf.h文件下内核中的源代码就都会包含以上.h文件,跟宏的定义情况进行条件编译。
Linux内核配制详细说明
Linux内核配制详细说明内核配制详细说明1. Code maturity level options代码成熟等级。
此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。
2. Loadable module support对模块的支持。
这里面有三项:Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
Set version inFORMation on all module symbols:可以不选它。
Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。
3. Processor type and featuresCPU类型。
内容蛮多的,不一一介绍了,有关的几个如下:Processor family:根据你自己的情况选择CPU类型。
High Memory Support:大容量内存的支持。
可以支持到4G、64G,一般可以不选。
Math emulation:协处理器仿真。
协处理器是在386时代的宠儿,现在早已不用了。
MTTR support:MTTR支持。
可不选。
Symmetric multi-processing support:对称多处理支持。
除非你富到有多个CPU,否则就不用选了。
4. General setup这里是对最普通的一些属性进行设置。
这部分内容非常多,一般使用缺省设置就可以了。
下面介绍一下经常使用的一些选项:Networking support:网络支持。
必须,没有网卡也建议你选上。
PCI support:PCI支持。
如果使用了PCI的卡,当然必选。
PCI access mode:PCI存取模式。
Linux内核的主要配置文件的详细说明
Linux内核的主要配置文件的详细说明Published by 笨二十一 at 12:54 上午 under Linux/Unix, 服务器1.Code maturity level options:代码成熟等级。
1.1.prompt for development and/or incomplete code/drivers.在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。
但是有些driver还没进入稳定的阶段。
但其作者很欢迎其他人去测试这些driver并提出一些bugs。
很多参考书上说这是那些开发人员认为还不是很稳定的功能。
但是我个人认为,这个是应该选的一个选项,系统默认是N,我建议还是选择Y,因为会使性能有所提高。
2.Loadable module support:对模块的支持。
2.1.Enable loadable module support.启动动态载入额外模块的功能,系统默认为Y,建议选择该功能。
2.2.Set version information on all module symbols.通常,我们更新核心版本之后,模块要重新的编译。
这个选项可以为某个版本的内核编译的模块在另一个内核下使用,但通常用不到,可以不选,系统默认为Y。
2.3.Kernel module loader.让内核在启动时有自己装入必需模块的能力,建议选上。
注意:在开机就会 mount 上来的partition 的 FS 、device driver 记得要 compiler 进 kernel,不能把它弄成 modules。
请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。
通常的建议是如果可能,将内核代码编译成可加载模块,因为这样可以使内核更小,而且更稳定。
警告!千万不要将文件系统(File System)部分的代码编译为可加载模块,如果你犯了这个错误,将文件系统(File System)部分的代码编译为可加载模块,结果将是内核无法读取它自己的文件系统。
Linux内核配制详细说明
Linux内核配制详细说明内核配制详细说明1. Code maturity level opti ons代码成熟等级。
此处只有一项:prompt for developmentan d/or in complete code/drivers ,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y 了;否则可以把它选择为N。
2. Loadable module support对模块的支持。
这里面有三项:Enable loadable module support :除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
Set vers ion in FORMatio n on all module symbols : 可以不选它。
Kernel module loader :让内核在启动时有自己装入必需模块的能力,建议选上。
3. Processor type and featuresCPU类型。
内容蛮多的,不一一介绍了,有关的几个如下:Processor family :根据你自己的情况选择CPU类型。
High Memory Support :大容量内存的支持。
可以支持到4G、64G, —般可以不选。
Math emulation :协处理器仿真。
协处理器是在386时代的宠儿,现在早已不用了。
MTTR support : MTTR 支持。
可不选。
Symmetric multi-processing support :对称多处理支持。
除非你富到有多个CPU,否则就不用选了。
4. Gen eral setup这里是对最普通的一些属性进行设置。
这部分内容非常多,一般使用缺省设置就可以了。
下面介绍一下经常使用的一些选项:Networking support :网络支持。
必须,没有网卡也建议你选上。
PCI support : PCI支持。
如果使用了PCI的卡,当然必选。
Linux内核结构详解
Linux内核结构详解于具体结构,我们的划分没有严格依照源代码的目录结构,且和子系统的分组也不完全匹配,但是,它很接近源代码的目录结构。
尽管前面的讨论的抽象结构显示了各个子系统之间只有很少的依赖关系,但是具体结构的5 个子系统之间有高度的依赖关系。
我们可以看出,具体结构中的很多依赖关系并没有在抽象结构中出现。
Linux 内核源代码目前,较新而又稳定的内核版本是2.0.x 和2.2.x,因为版本不同稍有差别,因此如果你想让一个新的驱动程序既支持2.0.x,又支持2.2.x,就需要根据内核版本进行条件编译,要作到这一点,就要支持宏LINUX_VERSION_CODE,假如内核的版本用a.b.c 来表示,这个宏的值就是216a+28b+c。
要用到指定内核版本的值,我们可以用KERNEL_VERSION 宏,我们也可以自己去定义它。
对内核的修改用补丁文件的方式发布的。
Patch 实用程序用来用来对内核源文件进行一系列的修改。
例如:你有2.2.9 的源代码,但想移到2.2.10。
就可以获得2.2.10 的补丁文件,应用patch 来修改2.2.9 源文件。
例如:$nbspcd /usr/src/linux $nbsppatch –pl nbsppatch-2.2.10 Linux 内核源代码的结构nbspLinux 内核源代码位于/usr/src/linux 目录下。
/include 子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核。
/init 子目录包含了内核的初始化代码,这是内核工作的开始的起点。
/arch 子目录包含了所有硬件结构特定的内核代码。
如:i386,alpha /drivers 子目录包含了内核中所有的设备驱动程序,如块设备和SCSI 设备。
/fs 子目录包含了所有的文件系统的代码。
如:ext2,vfat 等。
/net 子目录包含了内核的连网代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于每一个配置选项,用户可以回答"y"、"m"或"n"。
其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。
只有<>才能选择M1. General setup(通用选项)[*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。
[ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。
默认不使用。
嵌入式linux更不需要。
[ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。
[ ]Automatically append version information to the version string,自动生成版本信息。
这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。
这需要Perl的支持。
由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。
Kernel compression mode (LZMA),选择压缩方式。
[ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。
[*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。
有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
[*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。
建议你最好将它选上。
[*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。
可以选上,无所谓。
[*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。
[ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。
和BSD类似,数据将在进程结束时送入用户空间。
如果不清楚,选N(实验阶段功能,下同)。
[ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。
[ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。
[ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。
(16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。
12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。
[ ]Control Group support(有子项),使用默认即可,不清楚可以不选。
Example debug cgroup subsystem,cgroup子系统调试例子Namespace cgroup subsystem,cgroup子系统命名空间Device controller for cgroups,cgroups设备控制器Cpuset support,只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它。
[ ]enable deprecated sysfs features to support old userspace tools,在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,一般不选。
[ ]Kernel->user space relay support (formerly relayfs),内核系统区和用户区进行传递通讯的支持,这个选项在特定文件系统(relayfs)中提供数据接口支持,它可以支持从内核空间到用户空间的大批量数据传递的支持。
不清楚可以不选。
[ ]Namespaces support,(有子项)命名空间支持,允许服务器为不同的用户信息提供不同的用户名空间服务,不清楚可以不选。
[ ]Initial RAM filesystem and RAM disk (initramfs/initrd) support,初始RAM的文件和RAM磁盘(initramfs /initrd)支持(如果要采用initrd启动则要选择,否则可以不选),不需要,不用选。
嵌入式linux一般不选。
[ ]Optimize for size,优化大小,-Os代替-O2参数,可能会有二进制错误问题,一般不选。
(0)Default panic timeout,添0即可。
[*]Configure standard kernel features (for small systems),特殊内核用到,可以不选,嵌入式linux则必选。
[ ]Enable the Anonymous Shared Memory Subsystem,启用匿名共享内存子系统,不清楚可以不选。
[ ]Enable AIO support,支持AIO(Asynchronous I/O 异步事件非阻塞I/O),(包含aio.h, aio_read,向内核发出读命令,aio_write向内核写命令,详细见‘AIO介绍‘文档),AIO机制为服务器端高并发应用程序提供了一种性能优化的手段。
加大了系统吞吐量,所以一般用于大型服务器,一般不用选。
[ ]Kernel Performance Events And Counters(有子项),不清楚,不选。
[*]Enable VM event counters for /proc/vmstat,允许在/proc/vmstat中包含虚拟内存事件记数器。
[*]Enable SLUB debugging support,支持SLUB内存分配管理器调试,[ ]Disable heap randomization,禁用随即head,选不选均可。
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->,选择内存分配管理器,强烈推荐使用SLUB。
[ ]Profiling support,剖面支持,用一个工具来扫描和计算计算机的剖面图,支持系统测评,一般开发人员使用,不选。
[ ]Kprobes,调试人员使用,不选。
GCOV-based kernel profiling --->(有子项),默认即可。
2. Enable loadable module support(可加载模块)[ ]Forced module loading,强行加载模块,不建议选。
[*]Module unloading,支持模块卸载,必须选上。
[ ]Forced module unloading,强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。
如果你不是内核开发人员或者骨灰级的玩家,不建议选。
[ ]Module versioning suppor,这个功能可以让你使用其它版本的内核模块,除非特殊需要,一般不选。
[ ]Source checksum for all modules,这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突,现在很少使用,不选。
3. Enable the block layer(块设备层)[*]Support for large (2TB+) block devices and files,仅在使用大于2TB的块设备时需要[*]Block layer SG support v4,通用SCSI设备第四版支持。
[*]Block layer data integrity support,块设备数据完整性支持。
[*]IO Schedulers --->(有子项),IO调度器[ ]Anticipatory I/O scheduler,抢先式I/O调度器,大多数块设备只有一个物理查找磁头(例如一个单独的SA TA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器) [ ]Deadline I/O scheduler,期限式I/O调度器,轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)。
[ ]CFQ I/O scheduler,使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。
它将提供平等的工作环境,对于桌面系统很合适。
Default I/O scheduler (CFQ) --->默认IO调度器有上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。
如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。
期限式则是:所有的工作都有最终期限,在这之前必须完成。
当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。
CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。