AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 67759
Accepted
Tim
Tim
Asked: 2009-09-23 08:59:43 +0800 CST2009-09-23 08:59:43 +0800 CST 2009-09-23 08:59:43 +0800 CST

如何了解 linux 服务器中的内存使用情况和平均负载

  • 772

我正在使用具有 128GB 内存和 24 个内核的 linux 服务器。我使用 top 来查看它的使用量。它的输出粘贴在帖子的末尾。这里有两个问题:

(1)我看到每个正在运行的进程占用的内存比例很小(%MEM不超过0.2%,大多数只有0.0%),但是总内存怎么用的差不多,就像第四行的输出一样( “内存:总共 130766620k,使用了 130161072k,605548k 空闲,919300k 缓冲区”)?所有进程中已用内存百分比的总和似乎不太可能达到几乎 100%,不是吗?

(2)如何理解第一行的平均负载(“平均负载:14.04, 14.02, 14.00”)?

谢谢并恭祝安康!

编辑:

谢谢!

我也很喜欢听到一些基于已用内存百分比的粗略数字,以确定服务器是否负载过重,因为我曾经是在不了解当前负载的情况下塞满服务器的人。

交换是否被视为与内存几乎相同?例如,当内存和swap大小几乎相同时,如果内存快用完了,但swap仍然大部分是空闲的,我可以只看内存+swap的使用百分比仍然不高,然后运行其他新的吗?流程?

您如何考虑 CPU 或内存(或内存 + 交换)的使用?如果它们中的任何一个达到太高或两者兼而有之,您会担心吗?

顶部输出:

$顶部

 
顶部 - 19 天 12:45:33,23:11,18 个用户,平均负载:14.04、14.02、14.00
任务:共 484 个,运行 12 个,睡眠 472 个,停止 0 个,僵尸 0 个
CPU:36.7%us、19.7%sy、0.0%ni、43.6%id、0.0%wa、0.0%hi、0.0%si、0.0%st
内存:总计 130766620k,已使用 130161072k,空闲 605548k,919300k 缓冲区
交换:总计 63111312k,已使用 500556k,免费 62610756k,缓存 124437752k

  PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
 6529 桑切斯 18 -2 1075m 219m 13m S 100 0.2 13760:23 MATLAB
13210 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 3:56.75 荒谬
13888 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 2:04.89 荒谬
14542 蒂莫西 18 -2 48336 37m 1196 R 100 0.0 1:08.34 荒谬
14544 蒂莫西 18 -2 2888 2076 400 R 100 0.0 1:06.14 收集数据
 6183 桑切斯 18 -2 1133m 195m 13m S 100 0.2 13676:04 MATLAB
 6795 桑切斯 18 -2 1079m 210m 13m S 100 0.2 13734:26 MATLAB
10178 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 11:33.93 荒谬
12438 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 5:38.17 荒谬
13661 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 2:44.13 荒谬
14098 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 1:58.31 荒谬
14335 蒂莫西 18 -2 48336 37m 1196 R 100 0.0 1:08.93 荒谬
14765 蒂莫西 18 -2 48336 37m 1196 R 99 0.0 0:32.57 荒谬
13445 蒂莫西 18 -2 48336 37m 1216 R 99 0.0 3:01.37 荒谬
28990 根 20 0 0 0 0 S 2 0.0 65:50.21 pdflush
12141 蒂姆 18 -2 19380 1660 1024 R 1 0.0 0:04.04 顶部
 1240 根 15 -5 0 0 0 S 0 0.0 16:07.11 kjournald
 9019 根 20 0 296m 4460 2616 S 0 0.0 82:19.51 kdm_greet
    1 根 20 0 4028 728 592 S 0 0.0 0:03.11 初始化
    2 根 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
    3 根 RT -5 0 0 0 S 0 0.0 0:01.01 迁移/0
    4 根 15 -5 0 0 0 S 0 0.0 0:08.13 ksoftirqd/0
    5 根 RT -5 0 0 0 S 0 0.0 0:00.00 看门狗/0
    6 根 RT -5 0 0 0 S 0 0.0 17:27.31 迁移/1
    7 根 15 -5 0 0 0 S 0 0.0 0:01.21 ksoftirqd/1
    8 根 RT -5 0 0 0 S 0 0.0 0:00.00 看门狗/1
    9 根 RT -5 0 0 0 S 0 0.0 10:02.56 迁移/2
   10 根 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/2
   11 根 RT -5 0 0 0 S 0 0.0 0:00.00 看门狗/2
   12 根 RT -5 0 0 0 S 0 0.0 4:29.53 迁移/3
   13 根 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/3
linux
  • 5 5 个回答
  • 42036 Views

5 个回答

  • Voted
  1. Best Answer
    Pascal Thivent
    2009-09-23T13:33:13+08:002009-09-23T13:33:13+08:00

    (1)我看到每个正在运行的进程占用的内存比例很小(%MEM不超过0.2%,大多数只有0.0%),但是总内存怎么用的差不多,就像第四行的输出一样( “内存:总共 130766620k,使用了 130161072k,605548k 空闲,919300k 缓冲区”)?所有进程中已用内存百分比的总和似乎不太可能达到几乎 100%,不是吗?

    要查看您当前使用了多少内存,请运行free -m. 它将提供如下输出:

                 缓存的已用空闲共享缓冲区总数
    内存:2012 1923 88 0 91 515
    -/+ 缓冲区/缓存:1316 695
    交换:3153 256 2896
    

    顶行“使用”(1923)值几乎总是与顶行内存值(2012)几乎匹配。由于 Linux 喜欢使用任何空闲内存来缓存磁盘块 (515)。

    要查看的关键使用数字是缓冲区/缓存行使用值 (1316)。这是您的应用程序当前使用的空间量。为获得最佳性能,此数字应小于您的总 (2012) 内存。为了防止内存不足错误,它需要小于总内存(2012)和交换空间(3153)。

    如果您想快速查看有多少内存可用,请查看缓冲区/缓存行可用值 (695)。这是总内存(2012)-实际使用的(1316)。(2012 - 1316 = 696,不是 695,这只是一个四舍五入的问题)

    (2)如何理解第一行的平均负载(“平均负载:14.04, 14.02, 14.00”)?

    这篇关于平均负载的文章使用了一个很好的流量类比,是迄今为止我发现的最好的一篇:了解 Linux CPU 负载 - 你什么时候应该担心?. 正如人们指出的那样,就您而言:

    在多处理器系统上,负载与可用处理器内核的数量有关。“100% 利用率”标记在单核系统上为 1.00,在双核上为 2.00,在四核上为 4.00,等等。

    因此,平均负载为 14.00 和 24 个内核,您的服务器远未超载。

    • 56
  2. Scott Pack
    2009-09-23T09:39:58+08:002009-09-23T09:39:58+08:00

    类 Unix 系统(包括 linux)旨在尽可能有效地利用可用 RAM。一般来说,每 MB RAM 可以处于 3 种状态:

    1. 自由的
    2. 被进程使用
    3. 用于缓冲区

    第 3 个状态仅用作暂存空间,并打算在必要时重新分配,即程序的总可用内存实际上是 Free+UsedforBuffers。因此,您不会真正看到分配给任何特定进程的缓冲区分配空间。

    您的平均负载问题更有趣,因为它很容易被误解。有关完整的故事,请参阅这篇linuxjournal 文章。最好的总结是直接引用文章,

    负载平均计算最好被认为是 Linux 运行队列中标记为正在运行或不可中断的进程的移动平均值

    这意味着,您可以将平均负载视为(正在运行的进程数)+(等待 IO 的进程数)。请记住,在任何给定时间,您都可以执行 $CORE 数量的进程,我会说 14 的平均负载非常低。

    • 17
  3. Dennis Williamson
    2009-09-23T09:36:02+08:002009-09-23T09:36:02+08:00

    从sar手册页:

           平均负载计算为可运行的平均数或
           正在运行的任务(R状态),以及不间断的任务数
           在指定的时间间隔内休眠(D 状态)。
    

    从uptime手册页:

           系统负载平均值是进程的平均数量
           处于可运行或不可中断的状态。处于可运行状态的进程
           要么正在使用 CPU,要么正在等待使用 CPU。一个未完成的过程
           可中断状态正在等待一些 I/O 访问,例如等待磁盘。
           取三个时间间隔的平均值。平均负载
           没有针对系统中的 CPU 数量进行标准化,因此负载平均
           年龄为 1 表示单个 CPU 系统一直在加载,而在 4
           CPU 系统这意味着它有 75% 的时间处于空闲状态。
    
    • 4
  4. chaos
    2009-09-23T09:02:59+08:002009-09-23T09:02:59+08:00
    1. 一段时间以来,Linux 管理其内存的方式使该行top基本上无用,通常在用户进程不需要时将大部分机器内存分配给各种用途。
    2. 平均负载是运行或等待运行的平均进程数。它通常与系统延迟/响应性具有很强的负相关性,因此您希望它尽可能低。但是,由于您的每个 CPU 都可以在任何给定时间运行某些东西,因此您在 14 岁时似乎做得很好。
    • 3
  5. dmityugov
    2009-09-23T12:54:30+08:002009-09-23T12:54:30+08:00

    平均负载是一件好事。它可以让您了解超出 100% 利用率会发生什么,基本上:http ://en.wikipedia.org/wiki/Load_%28computing%29

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve