LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: nait

swap大小的疑问

[复制链接]
发表于 2004-12-25 19:06:17 | 显示全部楼层
Post by d00m3d
>也就是说swap分区的上限是8*(4096-10)-1约为128M,再多就访问不到了
That's the limit of the old 2.2.x kernel.  Who use 2.2.x kernel today?


swap和内核版本没有必然的关系吧.
看一下mkswap的实现(在util-linux包中),
  1. static void
  2. init_signature_page(void) {
  3. #ifdef PAGE_SIZE
  4.         defined_pagesize = PAGE_SIZE;
  5. #endif
  6.         kernel_pagesize = getpagesize(); //this will return 4096 on my box!!!!!!
  7.         pagesize = kernel_pagesize;

  8.         if (user_pagesize) {
  9.                 if ((user_pagesize & (user_pagesize-1)) ||
  10.                     user_pagesize < 1024) {
  11.                         fprintf(stderr, _("Bad user-specified page size %d\n"),
  12.                                 user_pagesize);
  13.                         exit(1);
  14.                 }
  15.                 pagesize = user_pagesize;
  16.         }

  17.         if (user_pagesize && user_pagesize != kernel_pagesize &&
  18.             user_pagesize != defined_pagesize)
  19.                 fprintf(stderr, _("Using user-specified page size %d, "
  20.                                   "instead of the system values %d/%d\n"),
  21.                         pagesize, kernel_pagesize, defined_pagesize);
  22.         else if (defined_pagesize && pagesize != defined_pagesize)
  23.                 fprintf(stderr, _("Assuming pages of size %d (not %d)\n"),
  24.                         pagesize, defined_pagesize);

  25.         signature_page = (long *) malloc(pagesize);
  26.         memset(signature_page,0,pagesize);
  27.         p = (struct swap_header_v1 *) signature_page;
  28. }
复制代码
页面大小是可以用-p参数指定的, 但必须是2的幂.
指定大小如果和内核返回大小不吻合, 还是会用指定大小
发表于 2004-12-25 21:43:36 | 显示全部楼层
Post by whblackhorse
swap和内核版本没有必然的关系吧.
看一下mkswap的实现(在util-linux包中),
  1. static void
  2. init_signature_page(void) {
  3. #ifdef PAGE_SIZE
  4.         defined_pagesize = PAGE_SIZE;
  5. #endif
  6.         kernel_pagesize = getpagesize(); //this will return 4096 on my box!!!!!!
  7.         pagesize = kernel_pagesize;

  8.         if (user_pagesize) {
  9.                 if ((user_pagesize & (user_pagesize-1)) ||
  10.                     user_pagesize < 1024) {
  11.                         fprintf(stderr, _("Bad user-specified page size %d\n"),
  12.                                 user_pagesize);
  13.                         exit(1);
  14.                 }
  15.                 pagesize = user_pagesize;
  16.         }

  17.         if (user_pagesize && user_pagesize != kernel_pagesize &&
  18.             user_pagesize != defined_pagesize)
  19.                 fprintf(stderr, _("Using user-specified page size %d, "
  20.                                   "instead of the system values %d/%d\n"),
  21.                         pagesize, kernel_pagesize, defined_pagesize);
  22.         else if (defined_pagesize && pagesize != defined_pagesize)
  23.                 fprintf(stderr, _("Assuming pages of size %d (not %d)\n"),
  24.                         pagesize, defined_pagesize);

  25.         signature_page = (long *) malloc(pagesize);
  26.         memset(signature_page,0,pagesize);
  27.         p = (struct swap_header_v1 *) signature_page;
  28. }
复制代码
页面大小是可以用-p参数指定的, 但必须是2的幂.
指定大小如果和内核返回大小不吻合, 还是会用指定大小

Oh!  Sorry, the 128M limit is on the 2.0.x kernel, not 2.2.x.

Below is extracted from the Changes file in the 2.2.0 kernel source documentation.

Util-linux (including mount)
============================

   Among other changes made in the development of Linux kernel 2.2, the
128 meg limit on IA32 swap partition sizes has been eliminated.  To use
larger swap spaces, you need the new mkswap found in util-linux.  You
also need to upgrade util-linux to get the latest version of mount.
 楼主| 发表于 2005-1-1 23:40:13 | 显示全部楼层
终于逮到证据了
看截图, 内存都快耗光了
swap用的还没超过128M

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-1-1 23:48:56 | 显示全部楼层
Post by tx-cary
我的内存512M,SWAP 1024M,最大使用情况是50%左右。此时会引起系统故障──退出某个占用很多内存的软件时,SWAP狂读写不止,系统停止相应,一直持续了10几分钟左右

我的是240M+512M的物理内存,swap800M,情况与你的一样....是不是swap太大的缘故....
发表于 2005-1-1 23:56:16 | 显示全部楼层
都是高手……
我从来不分swap分区,感觉起来运行起来也挺好的,可能是hiweed这样轻量的系统的关系吧
 楼主| 发表于 2005-1-2 11:44:35 | 显示全部楼层
Post by tx-cary
我的内存512M,SWAP 1024M,最大使用情况是50%左右。此时会引起系统故障──退出某个占用很多内存的软件时,SWAP狂读写不止,系统停止相应,一直持续了10几分钟左右

你能用到50%?
mkswap时你有没有用-p指定页面大小?
发表于 2005-1-2 14:31:35 | 显示全部楼层
页面大小?没有指定。mkswap的工作是由系统安装程序完成的,我也不知道它做了什么。
发表于 2005-1-2 16:54:00 | 显示全部楼层

哦,还是没有明白,呵呵

我也是看到内存两倍那个说法,内存1G,所以,就给swap接近2G的空间,汗啊,原来可能根本没用的啊。哦哦哦哦哦哦。
发表于 2005-1-2 18:06:57 | 显示全部楼层
那如果不分虚拟内存但系统需要呢?在/下分一块空间?
 楼主| 发表于 2005-1-2 19:07:03 | 显示全部楼层
Post by windsea
我也是看到内存两倍那个说法,内存1G,所以,就给swap接近2G的空间,汗啊,原来可能根本没用的啊。哦哦哦哦哦哦。

现在改也可以啊 :cool:  :cool:

p.s. 老兄好利害, 1G的内存
我想就不用swap了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表