Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36092
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 43
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-20 22:18
文章分类
文章存档

2016年(4)

我的朋友

分类: LINUX

2016-04-02 10:51:18

BiscuitOS / Linux 中最大文件数计算方法:
BiscuitOS 介绍 blog.chinaunix.net/uid-30647659-id-5691271.html

在文件系统中,涉及一个最大文件数,本帖重点讲述如何计算这个值.
VFS 在初始化过程中,从内核获得当前系统物理页的数量(默认一个物理页的大小为 4K).
一个 struct file 分配的 inode 和 dcache 的空间大概是 1K,内核规定 struct file 占用的内存不能超过总内存的 10%,
于是计算公式如下:
1. mempages 为系统物理页的数量,每个物理页默认为 4K.
2. PAGE_SIZE 为物理页的大小,那么:
          "PAGE_SIZE / 1024"
    上面表达式的含义为,因为一个 struct file 分配的 inode 和 dcache 空间大小为 1K,那么一个物理页就能存储 4 个 struct file.
3. 那么全部物理页可以存储的 struct file 为:
          mempages * (PAGE_SIZE / 1024)
4. 由于内核规定,struct file 的内存空间只能为总内存的 10 %,所以最后文件数为:
         (mempages * (PAGE_SIZE / 1024)) / 10
5. 系统默认最大的文件数为 NR_FILE,通过上面的计算,最后最大文件数结果为:
         files_stat.max_files = max_t(unsigned long, n, NR_FILE);


阅读(2825) | 评论(0) | 转发(0) |
0

上一篇:BiscuitOS

下一篇:没有了

给主人留下些什么吧!~~