Linux设置内核参数的方法

合集下载

Linux内核参数配置

Linux内核参数配置

Linux内核参数配置Linux在系统运⾏时修改内核参数(/proc/sys与/etc/sysctl.conf),⽽不需要重新引导系统,这个功能是通过/proc虚拟⽂件系统实现的。

在/proc/sys⽬录下存放着⼤多数的内核参数,并且设计成可以在系统运⾏的同时进⾏更改, 可以通过更改/proc/sys中内核参数对应的⽂件达到修改内核参数的⽬的(修改过后,保存配置⽂件就马上⾃动⽣效),不过重新启动机器后之前修改的参数值会失效,所以只能是⼀种临时参数变更⽅案。

(适合调试内核参数优化值的时候使⽤,如果设置值有问题,重启服务器还原原来的设置参数值了。

简单⽅便。

)但是如果调试内核参数优化值结束后,需要永久保存参数值,就要通过修改/etc/sysctl.conf内的内核参数来永久保存更改。

但只是修改sysctl⽂件内的参数值,确认保存修改⽂件后,设定的参数值并不会马上⽣效,如果想使参数值修改马上⽣效,并且不重启服务器,可以执⾏下⾯的命令:#sysctl –p下⾯介绍⼀下/proc/sys下内核⽂件与配置⽂件sysctl.conf中变量的对应关系:由于可以修改的内核参数都在/proc/sys⽬录下,所以sysctl.conf的变量名省略了⽬录的前⾯部分(/proc/sys)。

即将/proc/sys中的⽂件转换成sysctl中的变量依据下⾯两个简单的规则:1.去掉前⾯部分/proc/sys2.将⽂件名中的斜杠变为点这两条规则可以将/proc/sys中的任⼀⽂件名转换成sysctl中的变量名。

例如:/proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward/proc/sys/kernel/hostname =》 kernel.hostname可以使⽤下⾯命令查询所有可修改的变量名# sysctl –a、linux内核参数注释以下表格中红⾊字体为常⽤优化参数根据参数⽂件所处⽬录不同⽽进⾏分表整理下列⽂件所在⽬录:/proc/sys/net/ipv4/名称默认值建议值描述tcp_syn_retries51对于⼀个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。

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内核参数说明

Linux内核参数说明转载⾃:https:///tolimit/p/5065761.html 因个⼈能⼒有限,不能保证所有描述都正确,还请⼤家集思⼴益,有错误的地⽅欢迎⼤家留⾔指正,同时也欢迎⼤家留⾔对未标注项进⾏补偿,谢谢。

内核参数列表kernel.acct acct功能⽤于系统记录进程信息,正常结束的进程都会在该⽂件尾添加对应的信息。

异常结束是指重启或其它致命的系统问题,不能够记录永不停⽌的进程。

该设置需要配置三个值,分别是:1.如果⽂件系统可⽤空间低于这个百分⽐值,则停⽌记录进程信息。

2.如果⽂件系统可⽤空间⾼于这个百分⽐值,则开始记录进程信息。

3.检查上⾯两个值的频率(以秒为单位)。

kernel.auto_msgmni 系统⾃动设置同时运⾏的消息队列个数。

0:不⾃动1:⾃动kernel.blk_iopollkernel.cad_pid接收Ctrl-alt-del操作的INT信号的进程的PIDkernel.cap_last_cap系统capabilities最⾼⽀持的权限等级。

详见:/iamfy/archive/2012/09/20/2694977.html pat-logkernel.core_pattern设置core⽂件保存位置或⽂件名,只有⽂件名时,则保存在应⽤程序运⾏的⽬录下kernel.core_pipe_limit 定义了可以有多少个并发的崩溃程序可以通过管道模式传递给指定的core信息收集程序。

如果超过了指定数,则后续的程序将不会处理,只在内核⽇志中做记录。

0是个特殊的值,当设置为0时,不限制并⾏捕捉崩溃的进程,但不会等待⽤户程序搜集完毕⽅才回收/proc/pid⽬录(就是说,崩溃程序的相关信息可能随时被回收,搜集的信息可能不全)。

kernel.core_uses_pid Core⽂件的⽂件名是否添加应⽤程序pid做为扩展0:不添加1:添加kernel.ctrl-alt-del 该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应:1:不捕获ctrl-alt-del,将系统类似于直接关闭电源0:捕获ctrl-alt-del,并将此信号传⾄cad_pid保存的PID号进程进⾏处理kernel.dmesg_restrict 限制哪些⽤户可以查看syslog⽇志0:不限制1:只有特权⽤户能够查看kernel.domainname⽹络域名(重启失效)kernel.ftrace_dump_on_oops 确定是否将ftrace的缓冲区的信息打印出来,是通过printk来打印的0:不打印1:在系统oops时,⾃动dump堆栈信息到输出终端kernel.hostname主机名(重启失效)kernel.hotplug该⽂件给出了当前系统⽀持热插拔(hotplug)时接收热插拔事件的程序的名字(包括路径)。

linux系统内核参数优化-linux快速入门教程

linux系统内核参数优化-linux快速入门教程

linux系统内核参数优化-linux快速⼊门教程内核的 shmall 和 shmmax 参数SHMMAX= 配置了最⼤的内存segment的⼤⼩ ------>这个设置的⽐SGA_MAX_SIZE⼤⽐较好。

SHMMIN= 最⼩的内存segment的⼤⼩SHMMNI= 整个系统的内存segment的总个数SHMSEG= 每个进程可以使⽤的内存segment的最⼤个数配置信号灯( semphore )的参数:SEMMSL= 每个semphore set⾥⾯的semphore数量 -----> 这个设置⼤于你的process的个数吧,否则你不得不分多个semphore set,好像有process+n之说,我忘了n是⼏了。

SEMMNI= 整个系统的semphore set总数SEMMNS=整个系统的semphore总数shmall 是全部允许使⽤的共享内存⼤⼩,shmmax 是单个段允许使⽤的⼤⼩。

这两个可以设置为内存的 90%。

例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的⼤⼩为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

修改 /etc/sysctl.confkernel.shmmax=15461882265kernel.shmall=3774873kernel.msgmax=65535kernel.msgmnb=65535执⾏ sudo sysctl -p可以使⽤ ipcs -l 看结果。

ipcs -u 可以看到实际使⽤的情况========================================================================linux 内存管理⼀、前⾔本⽂档针对OOP8⽣产环境,具体优化策略需要根据实际情况进⾏调整;本⽂档将在以下⼏个⽅⾯来阐述如何针对RedHat Enterprise Linux 进⾏性能优化。

Linux利用Sysctl命令调整内核参数

Linux利用Sysctl命令调整内核参数

Linux利⽤Sysctl命令调整内核参数前⾔sysctl 命令被⽤于在内核运⾏时动态地修改内核的运⾏参数,可⽤的内核参数在⽬录 /proc/sys 中。

它包含⼀些TCP/IP堆栈和虚拟内存系统的⾼级选项,这可以让有经验的管理员提⾼引⼈注⽬的系统性能。

⽤sysctl可以读取设置超过五百个系统变量。

1、常见⽤法列出所有的变量并查看sysctl -a | less修改某变量的值sysctl -w 变量名=变量值#sysctl -w vm.max_map_count=262144读⼀个指定的变量,例如 kernel.msgmnb:[xt@butbueatiful ~]$ sysctl kernel.msgmnbkern.maxproc: 65536要设置⼀个指定的变量,直接⽤variable=value这样的语法:[xt@butbueatiful ~]$ sudo sysctl kernel.msgmnb=1024kernel.msgmnb: 1024可以使⽤sysctl修改系统变量,也可以通过编辑sysctl.conf⽂件来修改系统变量。

sysctl.conf 看起来很像 rc.conf。

它⽤variable=value的形式来设定值。

指定的值在系统进⼊多⽤户模式之后被设定。

并不是所有的变量都可以在这个模式下设定。

sysctl 变量的设置通常是字符串、数字或者布尔型。

(布尔型⽤ 1 来表⽰'yes',⽤ 0 来表⽰'no')。

sysctl -w kernel.sysrq=0sysctl -w kernel.core_uses_pid=1sysctl -w net.ipv4.conf.default.accept_redirects=0sysctl -w net.ipv4.conf.default.accept_source_route=0sysctl -w net.ipv4.conf.default.rp_filter=1sysctl -w net.ipv4.tcp_syncookies=1sysctl -w net.ipv4.tcp_max_syn_backlog=2048sysctl -w net.ipv4.tcp_fin_timeout=30sysctl -w net.ipv4.tcp_synack_retries=2sysctl -w net.ipv4.tcp_keepalive_time=3600sysctl -w net.ipv4.tcp_window_scaling=1sysctl -w net.ipv4.tcp_sack=12、关于sysctl⽂件的配置sysctl设置定义在 sur/lib/sysctl.d/ , /run/sysctl.d 和 /etc/sysctrl.d ⽬录下。

Linux内核参数-共享内存信号量semaphore设置

Linux内核参数-共享内存信号量semaphore设置

Linux内核参数-共享内存信号量semaphore设置共享内存:可以通过ipcs -lm命令查看目前系统共享内存的参数限制:# ipcs -lm—— Shared Memory Limits ——–max number of segments = 4096max seg size (kbytes) = 1048576max total shared memory (pages) = 2097152min seg size (bytes) = 1这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALLSHMMAX含义:单个共享内存段最大字节数设置:比SGA略大查看:cat /proc/sys/kernel/shmmax$ cat /proc/sys/kernel/shmmax1073741824修改:sysctl -w kernel.shmmax=1073741824echo “kernel.shmmax=1073741824″ >> /etc/sysctl.confSHMMNI含义:共享内存段最大个数设置:至少4096 查看:cat /proc/sys/kernel/shmmni# cat /proc/sys/kernel/shmmni4096修改:# sysctl -w kernel.shmmni=4096# echo “kernel.shmmni=4096″ >> /etc/sysctl.confSHMALL含义:系统中共享内存页总数设置:至少ceil(shmmax/PAGE_SIZE);ORACLE DOC 默认值:2097152*4096=8GB 查看:cat /proc/sys/kernel/shmall $ getconf PAGE_SIZE4096# cat /proc/sys/kernel/shmall2097152修改:# sysctl -w kernel.shmall=2097152# echo “kernel.shmall=2097152″ >> /etc/sysctl.conf信号量:当前系统信号量限制:oracle@lab-rd-01:~$ ipcs -ls—— Semaphore Limits ——–max number of arrays = 128max semaphores per array = 250max semaphores system wide = 32000max ops per semop call = 100SEMMSL含义:每个信号量set中信号量最大个数设置:最小250;对于processes参数设置较大的系统建议设置为processes+10 SEMMNI含义:linux系统信号量set最大个数设置:最少128SEMMNS含义:linux系统中信号量最大个数设置:至少32000;SEMMSL * SEMMNISEMOPM含义:semop系统调用允许的信号量最大个数设置:至少100;或者等于SEMMSL查看信号量设置:cat /proc/sys/kernel/semorder:SEMMSL, SEMMNS, SEMOPM, SEMMNIoracle@lab-rd-01:~$ cat /proc/sys/kernel/sem250 32000 100 128修改:sysctl -w kernel.sem=”250 32000 100 128″echo “kernel.sem=250 32000 100 128″ >> /etc/sysctl.conf修改完后,执行:sysctl -p。

linux内核配置make-menuconfig菜单详解

linux内核配置make-menuconfig菜单详解

linux内核配置make-menuconfig菜单详解前言一、配置系统的基本结构Linu某内核的配置系统由三个部分组成,分别是:1、Makefile:分布在Linu某内核源代码根目录及各层目录中,定义Linu某内核的编译规则;2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于Ncure图形界面以及基于某window图形界面的用户配置界面,各自对应于Makeconfig、Makemenuconfig和make某config)。

这些配置工具都是使用脚本语言,如Tcl/TK、Perl编写的(也包含一些用C编写的代码)。

本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。

所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写Makefile和配置文件就可以。

二、makefilemenuconfig过程讲解当我们在执行makemenuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linu某内核根目录下的cript文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linu某内核根目录下的makefile文件、各层目录下的makefile文件Linu某内核根目录下的的.config文件、arm/$ARCH/下的config文件Linu某内核根目录下的include/generated/autoconf.h文件1)cript文件夹存放的是跟makemenuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容2)当我们执行makemenuconfig命令出现上述蓝色配置界面以前,系统帮我们做了以下工作:首先系统会读取arch/$ARCH/目录下的Kconfig文件生成整个配置界面选项(Kconfig是整个linu某配置机制的核心),那么ARCH环境变量的值等于多少呢?它是由linu某内核根目录下的makefile文件决定的,在makefile下有此环境变量的定义:或者通过makeARCH=armmenuconfig命令来生成配置界面,默认生成的界面是所有参数都是没有值的比如教务处进行考试,考试科数可能有外语、语文、数学等科,这里相当于我们选择了arm科可进行考试,系统就会读取arm/arm/kconfig文件生成配置选项(选择了arm科的卷子),系统还提供了某86科、milp科等10几门功课的考试题3)假设教务处比较“仁慈”,为了怕某些同学做不错试题,还给我们准备了一份参考答案(默认配置选项),存放在arch/$ARCH/config下,对于arm科来说就是arch/arm/config文件夹:此文件夹中有许多选项,系统会读取哪个呢?内核默认会读取linu某内核根目录下.config文件作为内核的默认选项(试题的参考答案),我们一般会根据开发板的类型从中选取一个与我们开发板最接近的系列到Linu某内核根目录下(选择一个最接近的参考答案)#cparch/arm/config/3c2410_defconfig.config4).config假设教务处留了一个心眼,他提供的参考答案并不完全正确(.config文件与我们的板子并不是完全匹配),这时我们可以选择直接修改.config文件然后执行makemenuconfig命令读取新的选项但是一般我们不采取这个方案,我们选择在配置界面中通过空格、ec、回车选择某些选项选中或者不选中,最后保存退出的时候,Linu某内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行makeditclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/config下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.5)经过以上两步,我们可以正确的读取、配置我们需要的界面了那么他们如何跟makefile文件建立编译关系呢?当你保存makemenuconfig选项时,系统会除了会自动更新.config外,还会将所有的选项以宏的形式保存在Linu某内核根目录下的include/generated/autoconf.h文件下内核中的源代码就都会包含以上.h文件,跟宏的定义情况进行条件编译。

Linxu内核参数详解

Linxu内核参数详解

Linxu内核参数详解1. #表⽰SYN队列的长度,默认为1024,加⼤队列长度,可以容纳更多等待连接的⽹络连接数。

2. net.ipv4.tcp_max_syn_backlog = 655363.4. #每个⽹络接⼝接收数据包的速率⽐内核处理这些包的速率快时,允许送到队列的数据包的最⼤数⽬5. dev_max_backlog = 327686.7. #默认128,这个参数会影响到所有AF_INET类型socket的listen队列8. net.core.somaxconn = 327689.10. #系统套接字写默认缓冲区11. net.core.wmem_default = 838860812.13. #系统套接字读默认缓冲区14. net.core.rmem_default = 838860815.16. #系统套接字读最⼤缓冲区17. net.core.rmem_max = 1677721618.19. #系统套接字写最⼤缓冲区20. net.core.wmem_max = 1677721621.22. #此参数与net.ipv4.tcp_wmem都是⽤来优化TCP接收/发送缓冲区,包含三个整数值,分别是:min,default,max:23. #tcp_rmem:min表⽰为TCP socket预留⽤于接收缓冲的最⼩内存数量,default为TCP socket预留⽤于接收缓冲的缺省内存数量,max⽤于TCP socket接收缓冲的内存最⼤值。

24. #tcp_wmem:min表⽰为TCP socket预留⽤于发送缓冲的内存最⼩值,default为TCP socket预留⽤于发送缓冲的缺省内存值,max⽤于TCP socket发送缓冲的内存最⼤值。

25. net.ipv4.tcp_rmem=4096 87380 419430426. net.ipv4.tcp_wmem=4096 16384 419430427.28. #时间戳可以避免序列号的卷绕。

Linux和Unix下核心参数的调整

Linux和Unix下核心参数的调整

核心参数说明shmmax - 共享内存段.shmmin - 最小的共享内存段.shmmni - 共享内存标志符的数量.shmseg - 一个进程可分配的最大内存段数.shmall - 最大可允许的内存数.semmns - 信号量.semmsl- 一个信号灯集中最大的信号量数.共享内存SHMMAX:单个共享内存段的最大字节数。

SHMSEG:每个进程可链接的最多共享内存段数SHMALL:操作系统内全部共享内存的大小,应大于SHMMAX*SHMSEG。

消息队列MSGTQL:一个队列中可存放消息的个数MSGMAX:一个消息队列的最大字节数, 大于消息个数×一个消息的字节数。

MSGMNB:一个消息队列的最大字节数,大于消息个数*一个消息的字节数。

信号灯SEMMNI:信号灯集的个数。

SEMMSL:每个信号灯集中信号灯的最大个数SEMMNS:操作系统中信号灯的总数一、Linux下核心参数的调整1)操作对于正在运行内核 2.4 或更高版本的 Linux 系统,作为 root 用户在命令行上发出下列命令:∙sysctl -w kernel.msgmni=2048∙sysctl -w kernel.shmmax=1073741824∙sysctl -w fs.file-max=32768∙sysctl -w kernel.sem="512 32000 32 1024"要自动执行命令,编辑/etc/rc.d/rc.local文件,并将上述命令放在文件末尾。

在后续的每次系统引导时,就会自动设置这些值。

二.Solaris下核心参数的调整修改Solaris里/etc/system,设置格式如下:set shmsys:shminfo_shmmax=4294967295set shmsys:shminfo_shmmin=1set shmsys:shminfo_shmmni=100set shmsys:shminfo_shmseg=15set semsys:seminfo_semmns=200set semsys:seminfo_semmni=70set ulimit=3000000set semsys:seminfo_semmni=315set semsys:seminfo_semmsl=300set semsys:seminfo_semmns=630set semsys:seminfo_semopm=315set semsys:seminfo_semvmx=32767set shmsys:shminfo_shmmax=4294967295set shmsys:shminfo_shmmni=315set shmsys:shminfo_shmseg=10set shmsys:shminfo_shmmin=1set maxusers = <以MB为单位计的可用物理内存数量>set max_nprocs = 10 + 16 * maxusers//set max_nprocs=1200 系统所允许的最大进程数,通常最多30000set maxuprc = max_nprocs –10//每个用户可以拥有的最大进程数(为超级用户保留10个)set rlim_fd_max=2048set rlim_fd_cur=1024solaris 7下select()可以使用最多达65536的文件句柄,64-bit 应用程序缺省情况如此。

Linux操作系统修改内核参数的三种方法详细说明

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内核配置详解

内核编译配置选项简介(2.4.18-rmk7-pxal)来源: ChinaUnix博客作者:发布时间:2007-01-02Code maturity level options 代码成熟度选项Prompt for development and/or incomplete code/drivers显示尚在研发中或尚未完成的代码和驱动.除非您是测试人员或研发者,否则请勿选择我是研发者,所以选[ ]Prompt for obsolete code/drivers显示废弃的代码或驱动Loadable module support 可加载模块支持Enable loadable module support打开可加载模块支持,假如打开他则必须通过"make modules_install"把内核模块安装在/lib/modules/中[ ]Set version information on all module symbols允许使用其他内核版本的模块(可能会出问题)建议不选,能够避免模块版本不匹配kernel module loader让内核通过运行modprobe来自动加载所需要的模块,比如能够自动解决模块的依赖关系System Type 系统类型(S3C2410-based) ARM system typeARM系统,基于S3C2410---S3C2410 Implementation 基于S3C2410架构的实现SMDK (MERI TECH BOARD)SMDK2410是Samsung的S3C2410的Reference board,即公板公板是芯片厂家提供的样板卡。

现在市面上的产品绝大多数都是公板的,因为使用公板能够减少研发成本,特别是现在产品的推陈出新速度很快,造成绝大多数生产厂商为了追新,只能使用公板。

change AIJI支持AIJI的更新韩国爱极(AIJI)系统有限公司是三星公司最重要的技术合作伙伴,能够提供基于任何三星处理器尤其是三星ARM处理器的研发解决方案,如基于44B0、2410、2412、2413、2440、PSA926EJ和PSA920T等处理器的研发板by threewater--]三水==刘淼,呵呵,博创技术总监S3C2410 USB function support支持S3C2410的USB功能Support for S3C2410 USB character device emulation支持S3C2410的USB字符设备仿真---Processor Type 处理器类型ARM920T CPU idleARM920T I-Cache onARM920T Instruction CacheARM920T D-Cache onARM920T Data Cache一级缓存中分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。

(转)Linux内核参数设置sysctl命令详解

(转)Linux内核参数设置sysctl命令详解

(转)Linux内核参数设置sysctl命令详解Linux内核参数设置sysctl命令详解sysctl是⼀个允许您改变正在运⾏中的Linux系统的接⼝. 它包含⼀些 TCP/IP 堆栈和虚拟内存系统的⾼级选项, 这可以让有经验的管理员提⾼引⼈注⽬的系统性能. ⽤sysctl可以读取设置超过五百个系统变量. 基于这点, sysctl提供两个功能:读取和修改系统设置.常⽤参数-w 临时改变某个指定参数的值,如sysctl -w net.ipv4.ip_forward=1-a 显⽰所有的系统参数-p 从指定的⽂件加载系统参数,如不指定即从/etc/sysctl.conf中加载以下是实例$ sysctl -a #查看所有可读变量$ sysctl net.ipv4.ip_forward #查看某个变量net.ipv4.ip_forward = 1$ sysctl -n net.ipv4.ip_forward #获取某个变量的值1$ sysctl -w kernel.yama.ptrace_scope=0 #临时修改某个变量的当前值,即虚拟⽂件系统/proc下的值,重启失效kernel.yama.ptrace_scope = 0$ echo 1 > /proc/sys/net/ipv4/ip_forward #临时修改某个变量的当前值,效果同上#使⽤sed命令永久修改某值#把kernel.yama.ptrace_scope开头的⾏修改为后⾯的值,注意第2个/后⾯有个c表⽰change$ sudo sed -i "/^kernel.yama.ptrace_scope/ckernel.yama.ptrace_scope = 0" /etc/sysctl.d/10-ptrace.conf$ sysctl -p #将sysctl.conf⽂件中的修改读取到系统中,即虚拟⽂件系统/proc下的值从如上的命令也可以看出, 所有的变量都可以在/proc/sys中找到, 例如/proc/sys/kernel/yama/ptrace_scope, 如果要把它写⼊/etc/sysctl.conf⽂件中, 需要把前⾯的/proc/sys去掉, 同时写成kernel.yama.ptrace_scope的形式.。

Linux内核配置

Linux内核配置

Linux内核配置系统1.配置系统的基本结构Linux内核的配置系统由三个部分组成,分别是:1.Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则;2.配置文件(config.in):给用户提供配置选择的功能;3.配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于Xwindows 图形界面的用户配置界面,各自对应于 Make config、Makemenuconfig 和 make xconfig)。

这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。

本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。

所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。

所以,在本文中,我们只对Makefile 和配置文件进行讨论。

另外,凡是涉及到与具体 CPU 体系结构相关的内容,我们都以 ARM 为例,这样不仅可以将讨论的问题明确化,而且对内容本身不产生影响。

2. Makefile2.1 Makefile 概述Makefile 的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成 Linux 内核二进制文件。

由于 Linux 内核源代码是按照树形结构组织的,所以 Makefile 也被分布在目录树中。

Linux 内核中的 Makefile 以及与 Makefile 直接相关的文件有:1.Makefile:顶层 Makefile,是整个内核配置、编译的总体控制文件。

2..config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果(如 make config)。

3.arch/*/Makefile:位于各种 CPU 体系目录下的 Makefile,如arch/arm/Makefile,是针对特定平台的 Makefile。

Linux内核配置选项 (1)

Linux内核配置选项 (1)
将.config配置信息保存在内核中,选上它及它的子项使得 其它用户能从/proc中得到内核的配置,选上,则重新配置 内核时可以利用已有的配置,通过scripts/extract-ikconfig 脚本来提取这些信息 。
6
General setup->Initial RAM filesystem and RAM disk(initramfs/initrd) supportL源自nux内核配置选项1教学内容
2
1. General setup常规设置 2. Loadable module support可加载模块 3. Block Layer块设备层 4. System type系统类型
1 General setup常规设置
3
General setup:常规设置
General setup->prompt for development and/or incomplete code/drivers
这是为了编译某些特殊的内核使用的,例如引导盘,通常可 以不选这一选项,也就不用对它下面的子项操心了。
Enable 16-bit UID system calls
允许对UID系统调用进行过时的16-bit包装
7
Sysctl syscall support
不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能 从/proc/sys存取可以影响内核行为的参数或变量
代码成熟度等级,默认情况下是选择的,这将会在设置界面 中显示还在开发或者还没有完成的代码与驱动,你应该选择 它,因为有很多设备可能必须选择这个选项才能配置,实际 上它是安全的。
4
General setup->Automatically append version information to the version string 自动生成版本信息。这个选项会自动探测你的内核并且生成 相应的版本,使之不会与原先的重复。

Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA

Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA

Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA我们一般在Linux 上安装设置Oracle 数据库或者在更换或升级硬件的时候都需要配置Linux 系统的核心参数, 然后才是调整Oracle 系统参数。

具体这些参数的实质意义是什么,为什么要做调整,如何合理调整?带着这些问题我们做以下的一些分析以及测试。

注意:以下的一些测试可能只适用于Linux 系统,且测试Linux 系统为64Bit,32Bit Linux 系统可能有不一样。

测试环境: Linux AS 4.0 U5 64Bit核心版本: 2.6.9-55.ELsmp #1 SMP x86_641. Linux 系统下的核心参数:[root@ECSDB etc]# cat sysctl.conf 或者到 /proc/sys/kernel 下查看。

kernel.shmall = 2097152kernel.shmmax = 8405194752kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 262144net.core.rmem_max = 262144net.core.wmem_default = 262144net.core.wmem_max = 262144----- 小技巧:修改/etc/sysctl.conf 文件之后立刻生效命令# sysctl -p2. Linux 下核心参数调整kernel.shmmax ----SHMMAX Available physical memory Defines the maximum allowable sizeof one shared memory segment. The SHMMAX setting should be large enoughto hold the entire SGA in one shared memory segment. A low setting cancause creation of multiple shared memory segments which may lead toperformance degradation.Shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。

UBOOT引导Linux内核及向内核传递参数的方式

UBOOT引导Linux内核及向内核传递参数的方式

UBOOT引导Linux内核及向内核传递参数的⽅式 ⼀直以来没有想过有什么好的办法通过寄存器向内核传递参数,直到今天读UBOOT的实现⽅式。

在UBOOT中,引导内核最常⽤的⽅法是bootm命令,bootm命令可以引导“UBOOT格式”的内核。

先花点时间了解⼀下什么是“UBOOT格式”的内核吧:⽤UBOOT⾃带的mkimage命令⽣成的内核称为"UBOOT"格式的内核。

以下⾯这条命令为例: mkimage -n "Kernel 2.4.18" -A arm -O linux -T kernel -C none -a30007fc0 -e 30008000 -d 4020.bin vmlinux-2.4.18.img 其中与内核引导最密切的是-e 30008000,也就是内核的⼊⼝地址。

其它参数可以参考帮助信息。

其它UBOOT格式的内核与原来相⽐,只是进⾏(可选)了压缩,并在前⾯加了⼀个0x40⼤⼩的头。

这个头⾥放了内核的位置(0x30007fc0)和⼊⼝地址(0x30008000)和其它信息。

bootm命令执⾏时,先对头部信息等进⾏校验,然后把头信息放到⼀个结构⾥⾯。

最后根据内核类型调⽤相应的启动函数。

对于Linux⽽⾔就是do_bootm_linux,在启动函数⾥⾯,有这么⼀个操作:theKernel = (void (*)(int, int, uint))ntohl(hdr->ih_ep);,这是最关键的⼀个操作,将内核的⼊⼝地址0x30008000赋给了theKernel,在启动函数的最后,使⽤theKernel (0, bd->bi_arch_number, bd->bi_boot_params);启动内核。

根据传参规范,三个变量分别⽤r0,r1,r2传给内核,这样就巧妙地利⽤了函数指针进⾏了参数传递,实在是精妙!上⾯讲完了内核的引导及传参,需要引起注意的就是在使⽤mkimage命令⽣成内核时,-e后⾯的地址要⽐-a后⾯的地址偏移0x40,原因很简单,就不在细说了。

Sysctl命令及linux内核参数调整

Sysctl命令及linux内核参数调整

Sysctl命令及linux内核参数调整一、Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现。

命令格式:sysctl [-n] [-e] -w variable=valuesysctl [-n] [-e] -p (default /etc/sysctl.conf)sysctl [-n] [-e] –a常用参数的意义:-w 临时改变某个指定参数的值,如# sysctl -w net.ipv4.ip_forward=1-a 显示所有的系统参数-p从指定的文件加载系统参数,默认从/etc/sysctl.conf 文件中加载,如:# echo 1 > /proc/sys/net/ipv4/ip_forward# sysctl -w net.ipv4.ip_forward=1以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了 # service network restart命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf 文件,将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1二、linux内核参数调整:linux 内核参数调整有两种方式方法一:修改/proc下内核参数文件内容,不能使用编辑器来修改内核参数文件,理由是由于内核随时可能更改这些文件中的任意一个,另外,这些内核参数文件都是虚拟文件,实际中不存在,因此不能使用编辑器进行编辑,而是使用echo 命令,然后从命令行将输出重定向至 /proc 下所选定的文件中。

如:将timeout_timewait 参数设置为30秒:# echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout参数修改后立即生效,但是重启系统后,该参数又恢复成默认值。

Linux内核调试

Linux内核调试

可以看到,jiffies 的值得到了更新。
1.7.2 调试模块
由于模块并没有作为 vmlinux 的一部分传给 gdb,因此必须通过某种方法把模块信息告 知 gdb。 1.模块文件的组成
Linux 的模块是 ELF 格式的可执行映像,分成了很多个 section。与调试关系较为密切的
的三个 section 如下: .text:包含了模块的可执行代码。 .bss 和.data:包括了模块的变量(在模块编译阶段被初始化的变量在.data,其他的 在.bss )
(1)启动 gdb。
在第一行调用 gdb 时所传入的参数中: vmlinux:未压缩的 ELF 内核可执行文件变量。 此时可以通过 p 命令查看系统变量,例如
在没有选中 CONFIG_DEBUG_IN FO 时也可查看 jiffies
需要注意的是,从上图中可以看出,虽然 jiffies 是不停变换的,但是 gdb 每次读取同一 个变量时将得到相同的值,这是因为 gdb 对读到的值进行了缓存。如果希望去掉缓存的影响, 可以使用 core-file 命令。
(1)如果不清楚当前正在运行的内核源代码的目录,可以通过如下方法查看。
(2)进入内核源代码所在目录,通过 make menuconfig 命令进入编译选项配置环境, 如图 1.1 所示。
调试内核
图 1.1 编译选项配置环境
在选项配置环境中每个选项有“*”(编译进内核)、“M”(以模块方式编译)和“”(不 编译)三种状态,可以分别使用“Y”、“M”和“N”键来设置。 2.配置编译选项
(2)加载模块信息。模块名称和.text 基址是 add-symbol-file 命令的必要参数,.bss 和.data 的基址可使用-s 选项传给 add-symbol-file 命令。

Linux安装oracle11g内核参数修改

Linux安装oracle11g内核参数修改

Linux安装oracle11g内核参数修改vi /etc/sysctl.conffs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576vi /etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 4096oracle hard nofile 65536oracle soft stack 10240vi /etc/pam.d/loginsession required /lib/security/pam_limits.so session required pam_limits.sovi /etc/profileif [ $USER = "oracle" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifivi /home/oracle/.bash_profile // /home/oracle为oracle用户的家目录#Oracle SettingsTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_HOSTNAME=Lzy; export ORACLE_HOSTNAMEORACLE_UNQNAME=orcl; export ORACLE_UNQNAMEORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOMEORACLE_SID=orcl; export ORACLE_SIDPATH=/usr/sbin:$PATH; export PATHPATH=$ORACLE_HOME/bin:$PATH; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/j lib; export CLASSPATH安装完oracle11g之后随后远程登录linux服务器上,使用getsebool -a 可以查看bool 值相关设置信息,这里只需要更改ftp_home_dir 一项即可命令如下:setsebool -P ftp_home_dir 1再次使用getsebool -a查看发现 ftp_home_dir 显示为ON (图3)配置完成后,使用如下命令启动EM控制台:[oracle@oracle11g ~]$ emctl start dbconsole该命令的作用是查看EM工具是否已经安装配置,如果没有配置可以使用下面的命令来配置:[oracle@oracle11g ~]$ emctl start[oracle@oracle11g ~]$emca -config dbcontrol db -repos recreate。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux设置内核参数的方法1内核参数的查看方法使用“sysctl -a”命令可以查看所有正在使用的内核参数。

内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。

相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。

所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。

2内核参数的的设置方法由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。

也可以通过文件的方式进行设置。

下面就介绍这两种修改方法。

2.1命令设置的方式可以用两种方法实现。

1、使用“sysctl -w 参数名=值”的方式假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。

2、修改内核参数对应的proc文件内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。

举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。

同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1”> /proc/sys/net/ipv4/ip_forward”。

注意,这里proc文件跟普通的文件不一样。

一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。

2.2文件设置的方式更改的内核参数默认保存在/etc/sysctl.conf文件中。

修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。

例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:net.ipv4.ip_forward=1文件修改好后,进行保存。

然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。

通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。

但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设置)。

把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。

文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文件中的所有配置的值马上生效。

3内核参数设置的实际应用3.1文件和网络类参数我们一般需要关注的文件类的内核参数有fs.file-max和file-nr。

fs.file-max是一个系统能申请到的最大文件句柄数;file-nr是只读的,它与file-max相关,仅用于显示已分以前短信网管项目就出现过文件句柄的问题,现场是Solaris系统,而家里的测试是在HP-UX 进行,由于Solaris默认支持的文件句柄比HP-UX少很多(如下图所示),家里测试没有发1、按照最大打开文件数量的需求设置内核参数,并且通过检查/proc/sys/fs/file-max 文件来确认最大打开文件数已经被正确设置。

# cat /proc/sys/fs/file-max如果设置值太小,修改文件/etc/sysctl.conf的变量到合适的值。

2、在/etc/security/limits.conf文件中设置最大打开文件数,下面是一行提示:#<domain> <type> <item> <value>添加如下这行。

* - nofile 2048这行设置了每个用户的默认打开文件数为2048。

注意"nofile"项有两个可能的限制措施。

就是<type>项下的hard和soft。

要使修改过的最大打开文件数生效,必须对这两种限制进行设定。

如果使用"-"字符设定<type>, 则hard和soft设定会同时被设定。

硬限制表明soft限制中所能设定的最大值。

soft限制指的是当前系统生效的设置值。

hard限制值可以被普通用户降低。

但是不能增加。

soft限制不能设置的比hard限制更高。

只有root用户才能够增加hard限制值。

3、使用“ulimit -n 2048”来限制用户的最大文件打开数为2048。

ulimit -n对非root 用户有限制,对root用户则没有限制,能享受到整个系统可以同时打开的文件数的好处。

设置句柄数量后,系统重启后,又会恢复默认值。

如果想永久保存下来,可以修改.bash_profile文件,把上面命令加到最后。

3.2平台内核参数平台在安装的过程中,会调用一个专门的shell来负责系统内核参数的设置。

这个shell 是checkkernel,在平台上/home/zxin10/bin目录下能找到。

对于Linux,需要关注的是其中的check_linux_kernel函数。

下面是涉及到设置内核参数的主要代码,除开设置了平台相echo "echo $ShmMaxSizecfg > /proc/sys/kernel/shmmax" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmni" /etc/rc.d/rc.localthenecho "echo 300 > /proc/sys/kernel/msgmni" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmnb" /etc/rc.d/rc.localthenecho "echo 163840 > /proc/sys/kernel/msgmnb" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmax" /etc/rc.d/rc.localthenecho "echo 56383 > /proc/sys/kernel/msgmax" >> /etc/rc.d/rc.localfi########## 针对Oralce的一些内核参数的设置## 2007.01.10 add for oracle10gif [ "$db_version" = "oracle10g" ]thenif ! grep -q "/proc/sys/net/core/rmem_max" /etc/rc.d/rc.localthenecho "echo \"250 32000 100 128\" >/proc/sys/kernel/sem" >>/etc/rc.d/rc.localecho "echo \"1024 65000\" >/proc/sys/net/ipv4/ip_local_port_range" >>/etc/rc.d/rc.localecho "echo 1048576 >/proc/sys/net/core/rmem_max" >>/etc/rc.d/rc.localecho "echo 1048576 >/proc/sys/net/core/rmem_default" >>/etc/rc.d/rc.localecho "echo 262144 >/proc/sys/net/core/wmem_max" >>/etc/rc.d/rc.localecho "echo 262144 >/proc/sys/net/core/wmem_default" >>/etc/rc.d/rc.localfifi下面是网上一篇redhat linux as 4.7 静默安装 oracle 10g的过程中涉及到内核参数下面对上面涉及到的内核参数进行说明。

shmmax:共享内存段的最大字节数,建议设大点,甚至可以大过物理内存的字节数。

该参数定义了共享内存段的最大尺寸(以字节为单位)。

缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。

shmmin:共享内存段的最小尺寸。

这个参数的设置一般不会出问题。

shmmni:共享内存段的最大数目。

这个内核参数用于设置系统范围内共享内存段的最大数量。

该参数的默认值是4096 。

通常不需要更改。

shmseg:每个进程可分配的最大共享内存段数目shmall:最大的并发共享内存段数目,比SGA还要大。

该参数表示系统一次可以使用的共享内存总量(以页为单位,一个页大小为4KB)。

缺省值就是2097152,通常不需要修改。

sem:是semaphores的缩写,该参数表示设置的信号量。

它包含四个值:semmsl、semmns、semopm:系统调用允许的信号量最大个数。

至少100;或者等于SEMMSLsemmni:系统信号量set最大个数。

最少128semmsl:每个信号灯集合中最多的信号灯数目。

最小250;对于processes参数设置较大的系统建议设置为processes+10。

msgmni:指定消息队列标识的最大数目。

缺省设置:16msgmax:从一个进程发送到另一个进程的消息的最大长度。

进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。

缺省设置:8192msgmnb:一个消息队列中最大的字节数。

缺省设置:16384optmem_max:每个socket的最大缓存大小rmem_default:接收socket的缺省缓存大小(字节)rmem_max:接收socket的最大缓存大小(字节)wmem_default:发送的socket缺省缓存大小(字节)wmem_max:发送的socket最大缓存大小(字节)p_local_port_range:表示用于向外连接的端口范围。

相关文档
最新文档