Linux下如何查看内存

发布时间:2022-01-26 09:21:54 作者:小新
来源:亿速云 阅读:227
# Linux下如何查看内存

## 1. 前言

在Linux系统管理和性能调优中,内存监控是至关重要的环节。了解系统内存使用情况不仅能帮助管理员及时发现潜在问题,还能为应用程序优化提供依据。本文将详细介绍Linux下查看内存的各种方法,包括常用命令、工具解析以及实用技巧。

---

## 2. 基础命令工具

### 2.1 `free` 命令
最经典的内存查看工具,几乎所有Linux发行版都预装。

```bash
free -h

输出示例:

              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       2.1Gi       512Mi       8.7Gi        10Gi
Swap:         2.0Gi       0.0Gi       2.0Gi

参数说明: - -h:人类可读格式(自动转换GB/MB) - -s N:每N秒刷新一次 - -t:显示总计行

关键指标解析: - available:真正可用的内存(包含缓存可回收部分) - buff/cache:磁盘缓存和缓冲区占用的内存

2.2 top 命令

实时监控工具,可查看内存动态变化。

top

内存相关字段: - KiB Mem:物理内存使用情况 - KiB Swap:交换分区使用情况 - %MEM:进程内存占用百分比

操作技巧: 1. 按M按内存排序进程 2. 按E切换内存单位(KB/MB/GB)

2.3 vmstat 命令

提供虚拟内存统计信息。

vmstat -s -SM

输出示例:

      16384 M total memory
       4321 M used memory
       2573 M active memory
       1842 M inactive memory
       2103 M free memory
        512 M buffer memory
       8576 M swap cache

3. 高级监控工具

3.1 /proc/meminfo 文件

最原始的内存数据来源。

cat /proc/meminfo

关键字段说明: - MemTotal:总物理内存 - MemFree:完全空闲的内存 - Cached:页面缓存 - SwapCached:交换缓存 - Active/Inactive:活跃/非活跃内存

3.2 htop 命令

top的增强版,图形化界面更友好。

htop

优势特性: - 彩色显示内存使用比例 - 鼠标直接点击排序 - 树状视图显示进程关系

3.3 glances 工具

跨平台的系统监控工具,需额外安装。

pip install glances
glances

内存监控特点: - 环形图直观展示 - 历史趋势记录 - 警告阈值设置


4. 专业级工具

4.1 smem 命令

专注于内存占用分析。

smem -rs pss

输出示例:

  PID User     Command                         PSS    USS 
 1234 mysql    /usr/sbin/mysqld               345M   280M
 5678 nginx    nginx: worker process           45M    32M

独特指标: - PSS:按比例计算的共享内存 - USS:进程独占内存

4.2 valgrind 工具

主要用于内存泄漏检测。

valgrind --tool=memcheck ./your_program

4.3 numastat 命令

NUMA架构内存分析。

numastat -m

关键指标: - Node 0/1:不同NUMA节点内存分布 - Interleave:交叉分配情况


5. 图形化工具

5.1 GNOME System Monitor

图形界面查看: 1. 搜索打开”System Monitor” 2. 选择”Resources”标签页

5.2 KSysGuard

KDE环境下的监控工具: - 可定制监控面板 - 支持远程监控

5.3 Grafana + Prometheus

企业级监控方案:

# prometheus.yml 配置示例
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

6. 内存泄漏检测

6.1 使用pmap

查看进程详细内存映射:

pmap -x 1234

6.2 memtester 工具

内存压力测试:

memtester 1G 5

6.3 内核OOM日志分析

dmesg | grep -i oom

7. 自动化监控脚本

7.1 定时记录内存使用

#!/bin/bash
while true; do
    date >> memory.log
    free -m >> memory.log
    sleep 60
done

7.2 内存报警脚本

THRESHOLD=90
CURRENT=$(free | awk '/Mem/{printf("%d"), $3/$2*100}')
if [ $CURRENT -gt $THRESHOLD ]; then
    mail -s "Memory Alert" admin@example.com
fi

8. 性能优化建议

  1. 调整Swappiness

    sysctl vm.swappiness=10
    
  2. 清理缓存

    sync; echo 3 > /proc/sys/vm/drop_caches
    
  3. 大页内存配置

    grep Huge /proc/meminfo
    
  4. 限制进程内存

    ulimit -v 500000
    

9. 常见问题解答

Q:为什么free显示的内存几乎用完了? A:Linux会主动利用空闲内存作缓存,查看available字段才是真实可用内存。

Q:如何检测内存硬件故障? A:使用memtest86+工具进行完整检测。

Q:SWAP使用率过高怎么办? A:1) 增加物理内存 2) 优化应用程序 3) 调整swappiness值


10. 结语

掌握Linux内存监控是系统管理的基本功。建议组合使用多种工具: - 日常监控:htop + glances - 深度分析:smem + vmstat - 长期记录:Prometheus + Grafana

通过持续监控和分析,可以确保系统始终保持在最佳状态。

本文档最后更新:2023年10月
适用系统:RHEL/CentOS 7+, Ubuntu 18.04+
测试命令:GNU bash 5.0+ “`

注:实际字数为约1800字,可通过以下方式扩展: 1. 增加各命令的详细参数说明 2. 添加更多实际案例 3. 补充不同发行版的差异 4. 加入性能优化案例分析 5. 扩展图形化工具的截图说明

推荐阅读:
  1. linux下查看内存的命令
  2. Linux下如何查看内存使用情况

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Python中怎么使用Faker生成有意义的模拟数据

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》