在测试NAS性能,用fstest长时间写,分析性能变差的原因,发现server主机内存使用率很高。

1.首先查看内存

# top -M

top - 14:43:12 up 14 days, 6 min,  1 user,  load average: 8.36, 8.38, 8.41

Tasks: 419 total,   1 running, 418 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.0%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:    63.050G total,   62.639G used,  420.973M free,   33.973M buffers

Swap: 4095.996M total,    0.000k used, 4095.996M free,   48.889G cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

111 root      20   0     0    0    0 S  2.0  0.0   0:25.52 ksoftirqd/11

5968 root      20   0 15352 1372  828 R  2.0  0.0   0:00.01 top

13273 root      20   0     0    0    0 D  2.0  0.0  25:54.02 nfsd

17765 root       0 -20     0    0    0 S  2.0  0.0   0:11.89 kworker/5:1H

1 root      20   0 19416 1436 1136 S  0.0  0.0   0:01.88 init

.....

发现内存基本用完,究竟是什么进程占用?top命令发现排名第一的%MEM才零点几。

2.通过 vmstat -m命令查看内核空间的内存使用。

# vmstat -m

Cache                       Num  Total   Size  Pages

xfs_dqtrx                     0      0    384     10

xfs_dquot                     0      0    504      7

xfs_buf                   91425 213300    384     10

fstrm_item                    0      0     24    144

xfs_mru_cache_elem            0      0     32    112

xfs_ili                  7564110 8351947    224     17

xfs_inode                7564205 8484180   1024      4

xfs_efi_item                257    390    400     10

xfs_efd_item                237    380    400     10

xfs_buf_item               1795   2414    232     17

xfs_log_item_desc           830   1456     32    112

xfs_trans                   377    490    280     14

xfs_ifork                     0      0     64     59

xfs_da_state                  0      0    488      8

xfs_btree_cur               342    437    208     19

xfs_bmap_free_item           89    288     24    144

xfs_log_ticket              717    966    184     21

xfs_ioend                   726    896    120     32

rbd_segment_name            109    148    104     37

rbd_obj_request            1054   1452    176     22

rbd_img_request            1037   1472    120     32

ceph_osd_request            548    693    872      9

ceph_msg_data              1041   1540     48     77

ceph_msg                   1197   1632    232     17

nfsd_drc                  19323  33456    112     34

nfsd4_delegations             0      0    368     10

nfsd4_stateids              855   1024    120     32

nfsd4_files                 802   1050    128     30

nfsd4_lockowners              0      0    384     10

nfsd4_openowners             15     50    392     10

rpc_inode_cache              27     30    640      6

rpc_buffers                   8      8   2048      2

rpc_tasks                     8     15    256     15

fib6_nodes                   22     59     64     59

pte_list_desc                 0      0     32    112

ext4_groupinfo_4k           722    756    136     28

ext4_inode_cache           3362   3728    968      4

ext4_xattr                    0      0     88     44

ext4_free_data                0      0     64     59

ext4_allocation_context       0      0    136     28

ext4_prealloc_space          42     74    104     37

ext4_system_zone              0      0     40     92

Cache                       Num  Total   Size  Pages

ext4_io_end                   0      0     64     59

ext4_extent_status         1615   5704     40     92

jbd2_transaction_s           30     30    256     15

jbd2_inode                  254    539     48     77

........

发现这两项值很高: xfs_ili    xfs_inode  占用了大量的内存。

3.使用slabtop命令查看内核slab 缓冲区信息

#slabtop -s c | head

Active / Total Objects (% used)    : 31807723 / 35664583 (89.2%)

Active / Total Slabs (% used)      : 3259180 / 3259251 (100.0%)

Active / Total Caches (% used)     : 139 / 227 (61.2%)

Active / Total Size (% used)       : 11242773.43K / 12756788.05K (88.1%)

Minimum / Average / Maximum Object : 0.02K / 0.36K / 4096.00K

OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME

8480676 7565420  89%    1.00K 2120169        4

8480676K

xfs_inode

8351794 7565375  90%    0.22K 491282       17

1965128K

xfs_ili

xfs_ili占用1965128k  xfs_inode占用8480676K,但他们究竟是什么东东?猜测是nas/rbd 卷的文件系统缓存信息。xfs_inode看字面意思是xfs文件系统的inode信息。

搜了下xfs_ili,只搜到内核代码片段。

xfs_inode_zone =

1636                 kmem_zone_init_flags(sizeof(xfs_inode_t), "xfs_inode",

1637                         KM_ZONE_HWALIGN | KM_ZONE_RECLAIM | KM_ZONE_SPREAD,

1638                         xfs_fs_inode_init_once);

1639         if (!xfs_inode_zone)

1640                 goto out_destroy_efi_zone;

1641

1642         xfs_ili_zone =

1643                 kmem_zone_init_flags(sizeof(xfs_inode_log_item_t), "xfs_ili",

1644                                         KM_ZONE_SPREAD, NULL);

28 typedef struct xfs_inode_log_item {

29         xfs_log_item_t          ili_item;          /* common portion */

30         struct xfs_inode        *ili_inode;        /* inode ptr */

31         xfs_lsn_t               ili_flush_lsn;     /* lsn at last flush */

32         xfs_lsn_t               ili_last_lsn;      /* lsn at last transaction */

33         unsigned short          ili_lock_flags;    /* lock flags */

34         unsigned short          ili_logged;        /* flushed logged data */

35         unsigned int            ili_last_fields;   /* fields when flushed */

36         unsigned int            ili_fields;        /* fields to be logged */

37         struct xfs_bmbt_rec     *ili_extents_buf;  /* array of logged

38                                                       data exts */

39         struct xfs_bmbt_rec     *ili_aextents_buf; /* array of logged

40                                                       attr exts */

41         xfs_inode_log_format_t  ili_format;        /* logged structure */

42 } xfs_inode_log_item_t;

分析加估计是文件系统的日志缓存。究竟是不是?目前nfs-server有14个卷,每个卷的在格式化xfs的时指定的参数(即日志大小)-l=128m    14*128*1024 约等于1965128。

4.但是xfs_ili xfs_inode两者加起来才10G,还有50G去哪儿了呢?查资料说linux将用过的文件缓存到内存中。

执行下面的命令就释放了内存

#sync      #

刷到磁盘

#echo 3 > /proc/sys/vm/drop_caches

5.总结:是不是由于内存少导致的性能变差,还在测试。不过以后在优化nfs-server端有一定的指导意义。卷越多,必然占用的内存越多。做机头的内存配置要高。

linux内存耗尽实验,linux 内存耗尽的分析相关推荐

  1. Unix/Linux操作系统分析实验二 内存分配与回收:Linux系统下利用链表实现动态内存分配

    Unix/Linux操作系统分析实验一 进程控制与进程互斥 Unix/Linux操作系统分析实验三 文件操作算法: 实现在/proc目录下添加文件 Unix/Linux操作系统分析实验四 设备驱动: ...

  2. Linux软件基础实验,linux基本操作的实验

    linux基本操作的实验 发布时间:2008-10-02 00:37:30来源:红联作者:sfwjeo 实验一.linux基本操作 1.实验目的 了解linux的基本命令,熟练掌握其基本操作 2.相关 ...

  3. linux用户登录实验,Linux用户和组相关命令及实验

    本文简要介绍了在Linux系统下,如何对账户和组进行增.删.改的操作. 一. groupadd groupadd [选项] group_name -g GID:指定GID:默认是上一个组的GID+1: ...

  4. linux程序接口实验,Linux程序接口实验:取进程标志及用户信息

    0.环境平台 操作系统平台: Linux leaf 4.4.0-75-generic #96-Ubuntu SMP Thu Apr 20 09:56:33 UTC 2017 x86_64 x86_64 ...

  5. linux标准IO实验,Linux系统编程(第三篇) 标准IO.pdf

    第三章:标准I/O 目标: 本章旨在向学员介绍Linux系统 时间:3 学时 I/O相关函数的使用: 1)掌握I/O相关函数的特点及使 教学方法:讲授PPT 用方法 2 )了解I/O与系统调用相关的函 ...

  6. Linux软件基础实验,Linux基础与应用(基于CentOS7)

    {getUnitName} {getLessonName} 敬请期待 免费 {getTaskName} 剩余观看时长:{watchLimitRemaining} 回放 {activityStartTi ...

  7. linux计算器程序实验,Linux下基于GTK+的单词数值计算器

    一. 实验要求 综合运用CTK+提供的函数,按照一定的规则(具体见实验报告)计算一个单词或者一组单词的数值,并输出到屏幕或文件中. 1. 按照规则计算单词的值,如果 A B C D E F G H I ...

  8. Unix/Linux操作系统分析实验四 设备驱动: Linux系统下的字符设备驱动程序编程

    Unix/Linux操作系统分析实验一 进程控制与进程互斥 Unix/Linux操作系统分析实验二 内存分配与回收:Linux系统下利用链表实现动态内存分配 Unix/Linux操作系统分析实验三 文 ...

  9. Linux内存耗尽宕机6,转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...

    原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...

最新文章

  1. Keepalived双机热备
  2. linux iscsi软件,linux iscsi软件环境搭建
  3. spring事务的传播性的理解
  4. matlab 动画_MATLAB作图实例:51:表面动画
  5. 取代Cookie失败,Google上线FLoC反遭“围攻”!
  6. dz php表单发送邮件,php 发送邮件
  7. _软件园三期西片区F地块举行招商推介会 超300家企业意向落户 - 本网原创
  8. BZOJ3421 : Poi2013 Walk
  9. E-R图练习(邮件客户端系统)
  10. 【学习笔记】matlab进行数字信号处理(一)生成信号及信号的时域频域分析
  11. win10激活bug 任务栏假死点击无反应解决方案
  12. 深入浅出、通俗易懂的讲解CAN bus
  13. 单片机课设中期报告_毕业设计中期报告
  14. 验证码接码短信平台 - 小程序版
  15. 网络头衔CEO、COO、CFO、CTO是什么意思?
  16. 船用炉灶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 【Godot】一个节点发射器(泼水机)
  18. 异步(感应)电机概述
  19. java计算机毕业设计ssm+vue电影评论网站
  20. Unity3D 截取6面图 做全景图脚本

热门文章

  1. 接口请求到服务器端响应的时间,接口响应时间剖析
  2. ASIO4ALL v2中文手册
  3. Symantec 卸载密码方法
  4. ImageIo.read 返回null
  5. Dou学网-影视号起号视频教程
  6. 配置管理之二变更管理
  7. 河北师范大学汇华学院计算机类,河北师范大学汇华学院
  8. BDD - SpecFlow Web UI 测试实践
  9. sakai上传大文件失败解决方案
  10. iOS边录边播放、实现试听