免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9256 | 回复: 12
打印 上一主题 下一主题

关于buffer_head非常大的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-21 17:11 |只看该作者 |倒序浏览
内核 Linux  2.4.21-47.ELhugemem #1 SMP Thu Jul 20 09:37:25 CDT 2006 i686 i686 i386 GNU/Linux
发现系统内存free很少
# free -m
             total       used       free     shared    buffers     cached
Mem:          3970       3949         21          0         22       1327
-/+ buffers/cache:       2599       1371
Swap:         4094        747       3347

cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:  4163846144 4140515328 23330816        0 23703552 1516761088
Swap: 4293554176 783560704 3509993472
MemTotal:      4066256 kB
MemFree:         22784 kB
MemShared:           0 kB
Buffers:         23148 kB
Cached:        1358732 kB
SwapCached:     122480 kB
Active:        1180968 kB
ActiveAnon:    1110188 kB
ActiveCache:     70780 kB
Inact_dirty:    241324 kB
Inact_laundry:   91228 kB
Inact_clean:     91672 kB
Inact_target:   321036 kB
HighTotal:     2097152 kB
HighFree:         1696 kB
LowTotal:      1969104 kB
LowFree:         21088 kB
SwapTotal:     4192924 kB
SwapFree:      3427728 kB
CommitLimit:   6226052 kB
Committed_AS: 10119024 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     2048 kB

slabinfo信息:
         buffer_head:   718903KB  1127942KB   63.73
           pte_chain:   221233KB   303513KB   72.89
           size-8192:    46976KB    46976KB  100.0
           size-4096:    24860KB    24860KB  100.0
           size-1024:    10733KB    15412KB   69.64
           size-2048:     9222KB     9584KB   96.22
          size-16384:     6976KB     6992KB   99.77
            size-128:     3721KB     6933KB   53.67
            size-256:     4929KB     6791KB   72.58
          ocfs_ofile:     4945KB     5317KB   93.0
      ocfs_fileentry:     4140KB     4884KB   84.76
         inode_cache:     2744KB     4347KB   63.13
                sock:     3348KB     3968KB   84.37
                filp:     3321KB     3667KB   90.57
            size-512:     2396KB     3400KB   70.48
        ip_conntrack:     1468KB     2261KB   64.92
      vm_area_struct:     1689KB     2238KB   75.48
     blkdev_requests:     1536KB     1548KB   99.17
              kiobuf:      771KB     1462KB   52.72
        dentry_cache:      729KB     1398KB   52.11
       sighand_cache:     1171KB     1171KB  100.0
        ocfs_lockres:     1102KB     1102KB  100.0
   skbuff_head_cache:      671KB     1030KB   65.15
             size-64:      394KB     1008KB   39.9
             size-32:      534KB      931KB   57.39
            ocfs_oin:      663KB      663KB  100.0
         files_cache:      626KB      626KB  100.0
           mm_struct:      573KB      573KB  100.0
        signal_cache:      167KB      326KB   51.20
            fs_cache:      225KB      290KB   77.71
             pae_pgd:      225KB      279KB   80.60
          size-32768:      256KB      256KB  100.0

发现buffer_head非常大

但另外一台服务器,同样的kernel,
free -m
             total       used       free     shared    buffers     cached
Mem:          7982       2991       4991          0        226       1176
-/+ buffers/cache:       1588       6394
Swap:         4000          0       4000
其中cached有1176MB,但buffer_head只有几十兆
slabinfo信息:
           pte_chain:   292661KB   298961KB   97.89
         inode_cache:    93667KB    93667KB  100.0
         buffer_head:    70147KB    71103KB   98.65
        dentry_cache:    28470KB    28470KB  100.0
           size-4096:    20512KB    23392KB   87.68
           size-2048:    11372KB    13292KB   85.55
           size-1024:    10328KB    11320KB   91.23
            size-256:     5449KB     7717KB   70.61
          size-16384:     6944KB     6960KB   99.77
                sock:     6380KB     6380KB  100.0
            size-512:     4748KB     5988KB   79.29
       sighand_cache:     5038KB     5038KB  100.0
            size-128:     4422KB     4548KB   97.23
   skbuff_head_cache:     2740KB     3897KB   70.30
         files_cache:     3440KB     3440KB  100.0
           mm_struct:     2377KB     2377KB  100.0
          ocfs_ofile:     2092KB     2092KB  100.0
      vm_area_struct:     1829KB     2030KB   90.10
            sigqueue:     1958KB     1958KB  100.0
     blkdev_requests:     1800KB     1800KB  100.0
             size-32:     1765KB     1765KB  100.0
           size-8192:     1624KB     1640KB   99.2
                filp:     1481KB     1481KB  100.0
         names_cache:     1460KB     1460KB  100.0
        journal_head:      713KB     1375KB   51.89
        ip_dst_cache:     1170KB     1170KB  100.0
              kiobuf:      708KB      708KB  100.0
            fs_cache:      445KB      445KB  100.0
             pae_pgd:      406KB      406KB  100.0
        signal_cache:      304KB      304KB  100.0
             size-64:      300KB      300KB  100.0
          size-32768:      256KB      288KB   88.88

这是什么原因呢?能回收buffer_head空间吗?

论坛徽章:
0
2 [报告]
发表于 2010-02-21 17:16 |只看该作者
是不是内存leak,有bug?

论坛徽章:
0
3 [报告]
发表于 2010-02-21 17:30 |只看该作者
buffer_head应该比fs cache小2个数据级才对,现在buffer_head占用的内存跟文件系统缓存差不多了。
奇怪。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
4 [报告]
发表于 2010-02-21 17:36 |只看该作者
两个服务器上都跑什么样的服务?

论坛徽章:
0
5 [报告]
发表于 2010-02-21 17:45 |只看该作者
跑oracle服务。

Active / Total Objects (% used)    : 8946955 / 13470293 (66.4%)
Active / Total Slabs (% used)      : 426471 / 427085 (99.9%)
Active / Total Caches (% used)     : 52 / 78 (66.7%)
Active / Total Size (% used)       : 1123358.71K / 1616993.84K (69.5%)
Minimum / Average / Maximum Object : 0.01K / 0.12K / 128.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                  
10694565 6823382  63%    0.11K 305559       37   1222236K buffer_head


一个buffer_head有108字节大,表示一个4K的内存页,这样算起来,buffer_head大小应该只有文件缓存的40分之一大。怎么会有10694565个buffer-Head对象?

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
6 [报告]
发表于 2010-02-21 17:59 |只看该作者
两台机器上的swap空间使用情况是怎么样的
是否有换出的
或者有内存回收之类的

论坛徽章:
0
7 [报告]
发表于 2010-02-22 08:16 |只看该作者
swap信息见free命令输出。
10694565个buffer-Head对象,对比其它的机器,太不正常了。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
8 [报告]
发表于 2010-02-22 08:28 |只看该作者
回复 7# eof007

看了一下
两台机器上显示不太正常的那台使用了swap,另一台没有使用
是否是部分cache被换到了swap导致buffer_head的空间比重加大?

另外,两台机器的内存容量不同,后面一台很大,有足够的资源;
而前面那台相对来说负载已经比较大了
负载不同,这会影响到内存回收的操作是否执行

LZ可以试试类似硬件资源配置的机器在类似负载的情况是否也是这样

论坛徽章:
0
9 [报告]
发表于 2010-02-22 08:49 |只看该作者
buffer_head
10694565个buffer-Head对象,可以表示40GB+的文件系统缓存,但整个系统只有4G内存和4G swap,现在buffer_head跟文件系统buffer一样大了。
现在系统内存非常紧张。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
10 [报告]
发表于 2010-02-22 09:08 |只看该作者
回复 9# eof007


buffer_head对应的不是一个4K页面大小,而是1K吧
ULK3第15章有图
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP