Merge pull request #5217 from ucasFL/master

translated
This commit is contained in:
Flynn 2017-03-03 00:14:47 +08:00 committed by GitHub
commit 503cddc292
2 changed files with 220 additions and 219 deletions

View File

@ -1,219 +0,0 @@
ucasFL translating
free A Standard Command to Check Memory Usage Statistics (Free & Used) in Linux
============================================================
We all knows, most of the Servers (Including world Top Super Computers are running in Linux) are running in Linux platform on IT infrastructure because Linux is more flexible compare with other operating systems. Other operating systems required reboot for small small changes & patch updates but Linux systems doesnt required reboot except critical patch updates.
One of the big challenge for Linux administrator to maintain the system up and running without any downtime. To managing memory utilization on Linux is another challenging task for administrator, `free` is one of the standard & widely used command, to analyze Memory Statistics (Free & Used Memory) in Linux. Today we are going to cover free command with useful options.
Suggested Articles :
* [smem Linux Memory Reporting/Statistics Tool][1]
* [vmstat A Standard Nifty Tool to Report Virtual Memory Statistics][2]
#### Whats Free Command
free displays the total amount of `free` and `used` physical and `swap` memory in the system, as well as the `buffers` and `caches`used by the kernel. The information is gathered by parsing /proc/meminfo.
#### Display System Memory
Run the `free` command without any option to display system memory, including total amount of `free`, `used`, `buffers`, `caches`& `swap`.
```
# free
total used free shared buffers cached
Mem: 32869744 25434276 7435468 0 412032 23361716
-/+ buffers/cache: 1660528 31209216
Swap: 4095992 0 4095992
```
The output has three columns.
* Column-1 : Indicates Total memory, used memory, free memory, shared memory (mostly used by tmpfs (Shmem in /proc/meminfo)), memory used for buffers, cached contents memory size.
* Total : Total installed memory (MemTotal in /proc/meminfo)
* Used : Used memory (calculated as total free + buffers + cache)
* Free : Unused memory (MemFree in /proc/meminfo)
* Shared : Memory used (mostly) by tmpfs (Shmem in /proc/meminfo)
* Buffers : Memory used by kernel buffers (Buffers in /proc/meminfo)
* Cached : Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
* Column-2 : Indicates buffers/cache used & free.
* Column-3 : Indicates Total swap memory (SwapTotal in /proc/meminfo), free (SwapFree in /proc/meminfo)) & used swap memory.
#### Display Memory in MB
By default `free` command output display memory in `KB - Kilobytes` which is bit confusion to most of the administrator (Many of us convert the output to MB, to understand the size, when the system has more memory). To avoid the confusion, add `-m` option with free command to get instant output with `MB - Megabytes`.
```
# free -m
total used free shared buffers cached
Mem: 32099 24838 7261 0 402 22814
-/+ buffers/cache: 1621 30477
Swap: 3999 0 3999
```
How to check, how much free ram I really have From the above output based on `used` & `free` column, you may think, you have very low free memory, when its really just `10%`, How ?
Total Actual Available RAM = (Total RAM column2 used)
Total RAM = 32099
Actual used RAM = -1621
Total actual available RAM = 30477
If you have latest distribution, you have a option to see the actual free memory called `available`, for older distribution, look at the `free` column in the row that says `-/+ buffers/cache`.
How to check, how much RAM actually used From the above output based on `used` & `free` column, you may think, you have utilized morethan `95%` memory.
Total Actual used RAM = column1 used (column1 buffers + column1 cached)
Used RAM = 24838
Used Buffers = 402
Used Cache = 22814
Total Actual used RAM = 1621
#### Display Memory in GB
By default `free` command output display memory in `KB - Kilobytes` which is bit confusion to most of the administrator, so we can use the above option to get the output in `MB - Megabytes` but when the server has huge memory (morethan 100 GB or 200 GB), the above option also get confuse, so in this situation, we can add `-g` option with free command to get instant output with `GB - Gigabytes`.
```
# free -g
total used free shared buffers cached
Mem: 31 24 7 0 0 22
-/+ buffers/cache: 1 29
Swap: 3 0 3
```
#### Display Total Memory Line
By default `free` command output comes with three columns (Memory, Buffers/Cache & Swap). To display consolidated total in separate line (Total (Mem+Swap), Used (Mem+(Used Buffers/Cache)+Swap) & Free (Mem+(Used Buffers/Cache)+Swap), add `-t` option with free command.
```
# free -t
total used free shared buffers cached
Mem: 32869744 25434276 7435468 0 412032 23361716
-/+ buffers/cache: 1660528 31209216
Swap: 4095992 0 4095992
Total: 36965736 27094804 42740676
```
#### Run free with delay for better statistic
By default free command display single statistics output which is not enough to troubleshoot further so, add delay (delay is the delay between updates in seconds) which capture the activity periodically. If you want to run free with 2 second delay, just use the below command (If you want more delay you can change as per your wish).
The following command will run every 2 seconds until you exit.
```
# free -s 2
total used free shared buffers cached
Mem: 32849392 25935844 6913548 188 182424 24632796
-/+ buffers/cache: 1120624 31728768
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25935288 6914104 188 182424 24632796
-/+ buffers/cache: 1120068 31729324
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25934968 6914424 188 182424 24632796
-/+ buffers/cache: 1119748 31729644
Swap: 20970492 0 20970492
```
#### Run free with delay & counts
Alternatively you can run free command with delay and specific counts, once it reach the given counts then exit automatically.
The following command will run every 2 seconds with 5 counts then exit automatically.
```
# free -s 2 -c 5
total used free shared buffers cached
Mem: 32849392 25931052 6918340 188 182424 24632796
-/+ buffers/cache: 1115832 31733560
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25931192 6918200 188 182424 24632796
-/+ buffers/cache: 1115972 31733420
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25931348 6918044 188 182424 24632796
-/+ buffers/cache: 1116128 31733264
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25931316 6918076 188 182424 24632796
-/+ buffers/cache: 1116096 31733296
Swap: 20970492 0 20970492
total used free shared buffers cached
Mem: 32849392 25931308 6918084 188 182424 24632796
-/+ buffers/cache: 1116088 31733304
Swap: 20970492 0 20970492
```
#### Human readable format
To print the human readable output, add `h` option with `free` command, which will print more detailed output compare with other options like m & g.
```
# free -h
total used free shared buff/cache available
Mem: 2.0G 1.6G 138M 20M 188M 161M
Swap: 2.0G 1.8G 249M
```
#### Split Buffers & Cached memory output
By default `Buffers/Cached` memory output comes together. To split Buffers & Cached memory output, add `-w` option with free command. (This option is available on version 3.3.12).
Note : See the above output, `Buffers/Cached` comes together.
```
# free -wh
total used free shared buffers cache available
Mem: 2.0G 1.6G 137M 20M 8.1M 183M 163M
Swap: 2.0G 1.8G 249M
```
#### Show Low and High Memory Statistics
By default `free` command output comes without Low and High Memory Statistics. To display Show Low and High Memory Statistics, add `-l` option with free command.
```
# free -l
total used free shared buffers cached
Mem: 32849392 25931336 6918056 188 182424 24632808
Low: 32849392 25931336 6918056
High: 0 0 0
-/+ buffers/cache: 1116104 31733288
Swap: 20970492 0 20970492
```
#### Read more about free
If you want to know more option which is available for free, simply navigate to man page.
```
# free --help
or
# man free
```
--------------------------------------------------------------------------------
via: http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/
作者:[MAGESH MARUTHAMUTHU][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.2daygeek.com/author/magesh/
[1]:http://www.2daygeek.com/smem-linux-memory-usage-statistics-reporting-tool/
[2]:http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
[3]:http://www.2daygeek.com/author/magesh/

View File

@ -0,0 +1,220 @@
free - 一个在 Linux 中检查内存使用统计(空闲和已用)的标准命令
============================================================
我们都知道, IT 基础设施方面的大多数服务器(包括世界顶级超级计算机)都运行在 Linux 平台上,因为和其他操作系统相比, Linux 更加灵活。其他操作系统对于一些微乎其微的改动和补丁更新都需要重启,但是 Linux 不需要,只有对于一些关键补丁的更新, Linux 才会需要重启。
Linux 系统管理员面临的一大挑战是如何在没有任何停机时间的情况下维护系统的良好运行。管理内存使用是 Linux 管理员又一个具有挑战性的任务。`free` 是 Linux 中一个标准的并且被广泛使用的命令,它被用来分析内存统计(空闲和已用)。今天,我们将要讨论 `free` 命令以及它的一些有用选项。
推荐文章:
* [smem Linux 内存报告/统计工具][1]
* [vmstat 一个报告虚拟内存统计的标准而又漂亮的工具][2]
#### Free 命令是什么
free 命令能够显示系统中物理上的`空闲`和`已用`内存,还有`交换`内存,同时,也能显示被内核使用的`缓冲`和`缓存`。这些信息是通过解析文件 /proc/meninfo 而收集到的。
#### 显示系统内存
不带任何选项运行 `free` 命令会显示系统内存,包括`空闲`、`已用`、`缓冲`、`缓存`和`交换`的内存总数。
```
# free
总共 已用 空闲 共用 缓冲 缓存大小
内存: 32869744 25434276 7435468 0 412032 23361716
-/+ 缓冲/缓存: 1660528 31209216
交换: 4095992 0 4095992
```
输出有三行:
* 第一行:表明全部内存、已用内存、空闲内存、共用内存(主要被 tmpfs/proc/meninfo 中的 Shmem 项)使用)、用于缓冲的内存以及缓存内容大小。
* 全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)
* 已用:已用内存(全部计算 空间+缓冲+缓存)
* 空闲:未使用内存(/proc/meminfo 中的 MemFree 项)
* 共用:主要被 tmpfs 使用的内存(/proc/meminfo 中的 Shmem 项)
* 缓冲:被内核缓冲使用的内存(/proc/meminfo 中的 Buffers 项)
* 缓存:被页面缓存使用的内存(/proc/meminfo 中的 Cached and SSReclaimable 项)
* 第二行:表明已用和空闲缓冲/缓存
* 第三行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。
#### 以 MB 为单位显示系统内存
默认情况下, `free` 命令以 `KB - Kilobytes` 为单位输出系统内存,这对于绝大多数管理员来说会有一点迷糊(当系统内存很大的时候,我们中的许多人需要把输出转化为以 MB 为单位,从而才能够理解内存大小)。为了避免这个迷惑,我们在 free 命令后面加上 `-m` 选项,就可以立即得到以 MB - Megabytes 为单位的输出。
```
# free -m
全部 已用 空闲 公用 缓冲 缓存
内存: 32099 24838 7261 0 402 22814
-/+ 缓冲/缓存: 1621 30477
交换: 3999 0 3999
```
如何从上面的输出中检查剩余多少空闲内存?主要基于`已用`和`空闲`两列。你可能在想,你只有很低的空闲内存,因为它只有 `10%` 为什么?
全部实际可用内存 (全部内存 第 2 行已用内存)
全部内存 32099
实际已用内存 -1621
全部实际可用内存 30477
如果你的 Linux 版本是最新的,那么有一个查看实际空闲内存的选项,叫做 `available` ,对于旧的版本,请看显示 `-/+ buffers/cache` 那一行对应的‘空闲’一列。
如何从上面的输出中检查有多少实际已用内存?基于`已用`和`空闲`一列。你可能想,你已经使用了超过 `95%` 的内存。
全部实际已用内存 第一列‘已用’ (第一列‘缓冲’ ‘第一列缓存’)
已用内存 24838
已用缓冲 402
已用缓存 22814
全部实际已用内存 1621
#### 以 GB 为单位显示内存
默认情况下, `free` 命令会以 `KB - kilobytes` 为单位显示输出,这对于大多数管理员来说会有一些迷惑,所以我们使用上面的选项来获得以 `MB - Megabytes` 为单位的输出。但是,当服务器的内存很大(超过 100 GB 或 200 GB上面的选项也会让人很迷惑。所以在这个时候我们可以在 `free` 命令后面加上 `-g` 选项,从而立即得到以 `GB - Gigabytes` 为单位的输出。
```
# free -g
全部 已用 空闲 共用 缓冲 缓存
内存: 31 24 7 0 0 22
-/+ 缓冲/缓存: 1 29
交换: 3 0 3
```
#### 显示全部内存线
默认情况下, `free` 命令的输出只有三列(内存、缓冲/缓存以及交换)。为了统一以分割线显示(全部(内存+交换)、已用(内存+(已用-缓冲/缓存)+交换)以及空闲(内存+(已用-缓冲/缓存)+交换),在 free 命令后面加上 `-t` 选项
```
# free -t
全部 已用 空闲 共用 缓冲 缓存
内存: 32869744 25434276 7435468 0 412032 23361716
-/+ 缓冲/缓存: 1660528 31209216
交换: 4095992 0 4095992
交换: 36965736 27094804 42740676
```
#### 伴有延迟运行 free 命令从而更好的统计
默认情况下, free 命令只会显示单一的统计输出,这是不足够进一步排除故障的,所以,可以通过添加延迟(在几秒内更新的延迟)来定期统计内存活动。如果你想以两秒的延迟运行 free 命令,可以使用下面的命令(如果你想要更多的延迟,你可以按照你的意愿更改数值)。
下面的命令将会每 2 秒运行一次直到你退出:
```
# free -s 2
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25935844 6913548 188 182424 24632796
-/+ 缓冲/缓存: 1120624 31728768
交换: 20970492 0 20970492
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25935288 6914104 188 182424 24632796
-/+ 缓冲/缓存: 1120068 31729324
交换: 20970492 0 20970492
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25934968 6914424 188 182424 24632796
-/+ 缓冲/缓存: 1119748 31729644
交换: 20970492 0 20970492
```
#### 伴有延迟和计数运行 free 命令
另外,你可以伴随延迟和具体计数运行 free 命令,一旦达到具体计数,便自动退出
下面的命令将会每 2 秒运行一次 free 命令,计数 5 次以后自动退出
```
# free -s 2 -c 5
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25931052 6918340 188 182424 24632796
-/+ 缓冲/缓存: 1115832 31733560
交换: 20970492 0 20970492
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25931192 6918200 188 182424 24632796
-/+ 缓冲/缓存: 1115972 31733420
Swap: 20970492 0 20970492
全部 已用 空闲 共用 缓冲 缓存
内存: 32849392 25931348 6918044 188 182424 24632796
-/+ 缓冲/缓存: 1116128 31733264
交换: 20970492 0 20970492
全部 已用 空闲  共用 缓冲 缓存
内存: 32849392 25931316 6918076 188 182424 24632796
-/+ 缓冲/缓存: 1116096 31733296
交换: 20970492 0 20970492
全部 已用 空闲 共用 缓冲  缓存
内存: 32849392 25931308 6918084 188 182424 24632796
-/+ 缓冲/缓存: 1116088 31733304
交换: 20970492 0 20970492
```
#### 人类可读格式
为了以人类可读的格式输出,在 `free` 命令的后面加上 `-h` 选项,和其他选项比如 `-m``-g` 相比,这将会打印出更多的细节输出。
```
# free -h
全部 已用 空闲 共用  
缓冲/缓存  可用
内存: 2.0G 1.6G 138M 20M 188M 161M
交换: 2.0G 1.8G 249M
```
#### 分离缓冲区和缓存内存输出
默认情况下, `缓冲/缓存` 内存输出是在一起的。为了分离缓冲和缓存内存输出,可以在 free 命令后面加上 `-w` 选项。(该选项在版本 3.3.12 上可用)
注意:看上面的输出,`缓冲/缓存`是在一起的。
```
# free -wh
全部 已用 空闲 共用    缓冲 缓存 可用
内存: 2.0G 1.6G 137M 20M 8.1M 183M 163M
交换: 2.0G 1.8G 249M
```
#### 显示最低和最高的内存统计
默认情况下, `free` 命令不会显示最低和最高的内存统计。为了显示最低和最高的内存统计,在 free 命令后面加上 `-l` 选项。
```
# free -l
全部 已用 空闲 共用       缓冲  缓存
内存: 32849392 25931336 6918056 188 182424 24632808
底: 32849392 25931336 6918056
高: 0 0 0
-/+ 缓冲/缓存: 1116104 31733288
交换: 20970492 0 20970492
```
#### 阅读关于 free 命令的更过信息
如果你想了解 free 命令的更多可用选项,只需查看 man 手册。
```
# free --help
or
# man free
```
--------------------------------------------------------------------------------
via: http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/
作者:[MAGESH MARUTHAMUTHU][a]
译者:[ucasFL](https://github.com/ucasFL)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.2daygeek.com/author/magesh/
[1]:http://www.2daygeek.com/smem-linux-memory-usage-statistics-reporting-tool/
[2]:http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
[3]:http://www.2daygeek.com/author/magesh/