3.3 内存瓶颈
On a Linux system, many programs run at the same time.
These programs support multiple users, and some processes are more used than others.
- Some of these programs use a portion of memory while the REST are "sleeping."
- When an application accesses cache, the performance increases because an in-memory access retrieves data,
thereby eliminating the need to access slower disks.
在 Linux 系统中, 在同一时间有支持多个用户的多个程序在运行, 它们对内存使用有多有少;
应该程序访问内存数据的效率要比磁盘高;
The OS uses an algorithm to control which programs will use physical memory and which are paged out.
This is transparent to user programs. Page space is a file created by the OS on a disk partition
to store user programs that are not currently in use. Typically, page sizes are 4 KB or 8 KB.
In Linux, the page size is defined by using the variable EXEC_PAGESIZE in the include/asm-<architecture>/param.h
kernel header file. The process used to page a process out to disk is called pageout.
操作系统使用一定的策略来决定哪些程序将使用物理内存, 哪些程序将被从内存页面中替出;
这些操作对用户程序来说是透明的;
页面空间是由操作系统在磁盘划分上创建的文件, 用来存储当前未在使用的用户程序;
通常, 页面大小为 4KB 或 8KB;
在 Linux 系统中, 页面大小由内核的头文件:
include/asm-<architecture>/param.h
中的宏 EXEC_PAGESIZE 来定义;
进程使用的页面被替换到磁盘称为换页 或 页面溢出;
3.3.1 Finding memory bottlenecks
寻找内存瓶颈
文章的这部分使用了 KDE 的一个工具 KDE System Guard 来做内存检测;
KDE,K 桌面环境 (Kool Desktop Environment) 的缩写.
一种著名的运行于 Linux,Unix 以及 FreeBSD 等操作系统上面自由图形工作环境,
整个系统采用的都是 TrollTech 公司所开发的 Qt 程序库(现在属于 Digia 公司).
KDE 和 Gnome 都是 Linux 操作系统上最流行的桌面环境系统.
Start your analysis by listing the applications that are running on the server.
Determine how much physical memory and swap each application needs to run.
Figure 3-1 on page 83 shows KDE System Guard monitoring memory usage.
?
图 3.1 KDE System Guard 内存监测
?The indicators in Table 3-1 can also help you define a problem with memory.
表 3-1
Paging and swapping indicators
换页和交换的意义
In Linux, as with all UNIX-based operating systems, there are differences between paging and swapping.
Paging moves inpidual pages to swap space on the disk;
swapping is a bigger operation that moves the entire address space of a process to swap space in one operation.
在 Linux 系统中, 分布和交换是不同的;
换页是将独立的页面移到磁盘的交换空间;
交换是更大的操作, 它将整个进程的地址空间一次性移到磁盘的交换空间;
Swapping can have one of two causes:
导致交换的原因有两个
. A process enters sleep mode.
进程进入 sleep 模式
- This usually happens because the process depends on interactive action and editors, shells,
- and data entry applications spend most of their time waiting for user input. During this time,
they are inactive.
这种情况通常是因为进程需要和编辑器, shell 等交互, 以及应用程序需要等待用户的数据输入;
在这是, 它是非活动的;
. A process behaves poorly.
进程的异常行为
- Paging can be a serious performance problem when the amount of free memory pages falls
- below the minimum amount specified, because the paging mechanism is not able to handle
- the requests for physical memory pages and the swap mechanism is called to free more pages.
This significantly increases I/O to disk and will quickly degrade a server's performance.
当空闲内存页面过小时, 换页会导致严重的性能问题,
因为换页机制不能处理物理内存页面的请求, 而交换机制将会调用更多的空闲内存页面.
这会急剧增加磁盘的 I/O, 并快速地拉低服务器的性能
- If your server is always paging to disk (a high page-out rate), consider adding more memory.
- However, for systems with a low page-out rate, it might not affect performance.
如果服务器总是在换页(一个很高的换页率), 就需要考虑增加内存;
当然, 系统换页率低时, 它不会影响性能;
3.3.2 Performance tuning options
性能调整选项
- It you believe there is a memory bottleneck,
- consider performing one or more of these actions:
如果你确认是内存的瓶颈, 可以考虑用下面的办法来解决
. Tune the swap space using bigpages, hugetlb, shared memory.
调整交换空间, 使用大页面, 大块内存, 共享内存
. Increase or decrease the size of pages.
增加或降低页面的大小;
?
. Improve the handling of active and inactive memory.
改进对活动和非活动内存的处理;
. Adjust the page-out rate.
调整换页率;
?
. Limit the resources used for each user on the server.
限制服务器上每个用户的可用资源;
. Stop the services that are not needed, as discussed in "Daemons" on page 97.
停掉不需要的服务
. Add memory.
增加内存;
来源: http://www.bubuko.com/infodetail-2875244.html