- 主题:问几个 kbs 代码的问题
受教了,原来还有这茬,mmap 的这种行为在其它 OS 比如 BSD、Solaris 上是否
不一样?
【 在 KCN (毒中之毒~strongest) 的大作中提到: 】
: 用sysv的原因是,mmap在linux上的实现,在进程退出的时候,会强制dirty page
: 进行一次flush,这个会造成很多无谓的i/o。所以对于读写频繁的.PASSWDS采用了
: sysv定时flush的方式,控制不必要的i/o
: ...................
--
FROM 211.157.41.*
mmap PROT_WRITE, MAP_SHARED 没有放弃一说,改了内存里东西就相当于改了文件了。
进程退出时不刷新到硬盘上也可以,只要保证下次打开文件读写时照顾到先前被
映射的区域,这样做效率高点,感觉实现要复杂些。
【 在 JulyClyde (七月) 的大作中提到: 】
: 既然是dirty page,总得有明确的指示是保存还是放弃吧?
--
修改:Dieken FROM 211.157.41.*
FROM 211.157.41.*
【 在 JulyClyde (七月) 的大作中提到: 】
: 标 题: Re: 问几个 kbs 代码的问题
: 发信站: 水木社区 (Tue Apr 8 09:07:26 2008), 转信
:
:
: 【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: : 在看 atppp 的那篇 kbsIntro.txt,写的挺好,有些疑问,版上有人知道的话
: : 指点一下,省的我去看代码了。
: : * 版面文章索引文件有 .DIR, .JUNK,那么删除一个帖子时是把 .DIR 中
: : 对应的 fileheader 去掉,后头索引项往前挪吗?我觉得不大可能是这样,
: : 但 fileheader 里头 FILE_DEL 注释说“版主标记删除 X”,那么不是“已删除
: : 标记”了。
: : * 我原先以为用户登录就是用的 login 或者 ssh,然后派生个 bbs 作为 shell,
: : 看 INSTALL.debian 后才知道有 bbsd, sshbbsd,请问自己写 telnetd 和 sshd
: : 有什么好处?
: 可以自定义身份验证机制。不过你也可以用bbsd -i(inetd模式)配合ssh
不是这个原因,用自己的 telnetd 有各种好处,一个是省了一次 fork, 一个是省了一对 pty 设备,自己的 sshd 的好处同上,而且还省一个 sshd 进程,防止 ssh 可能有的其他强大功能带来安全问题,比如有些人是不知道需要禁止掉 ssh 执行命令或者 port forward 的。
: : * kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
: : 有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
: : IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
这个分情况讨论,如果 mmap 不带 tmpfs 使用,你会发现进程退出的时候系统会强制刷写所有的 dirty page, 造成很大的开销。带 tmpfs 的话将就可以忍,但使用起来也很麻烦,启动时候要从硬盘上拷贝到 tmpfs, 中间为了防止断电或者死机要定期拷贝回去,sysv shm 需要的工作量跟这个差不多,而且明显要少很多开销,因此一起看就很划算了,另外这里进程退出不自动摧毁 shm 的效果反而是我们所需要的。如果他退出了就销毁了对我们来说操作还挺麻烦。
: 所以有clearipc.sh这个脚本。大概是历史问题?
: : BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: : 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
:
:
: --
: ╱╲ █ 冷咖啡离开了杯垫 ◣
: ╰╯ █ 我忍住的情绪在很后面
: ξ █ 拼命想挽回的从前
: █D █ 在我脸上依旧清晰可见
: ┳━━━━━┳ ●█ ——周杰伦《不能说的秘密》
: ┃ ┃ ︵■█
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 124.207.144.*]
--
FROM 220.181.38.*
而且只有在退出时才写入?
写入时机过于集中了
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: mmap PROT_WRITE, MAP_SHARED 没有放弃一说,改了内存里东西就相当于改了文件了。
: 进程退出时不刷新到硬盘上也可以,只要保证下次打开文件读写时照顾到先前被
: 映射的区域,这样做效率高点,感觉实现要复杂些。
: ...................
--
FROM 124.207.144.*
倒不是在退出时候再写入,平时也会正常 flush, 退出时候这个写估计是内核为了某些地方实现方便,要强迫刷一次。这里看起来应该是有优化的余地,但是改 kernel 不太像是 kbs 应该干的事情。
【 在 JulyClyde (七月) 的大作中提到: 】
: 而且只有在退出时才写入?
: 写入时机过于集中了
--
FROM 220.181.38.*
【 在 kxn (时光似箭,果蝇喜欢香蕉) 的大作中提到: 】
: 标 题: Re: 问几个 kbs 代码的问题
: 发信站: 水木社区 (Tue Apr 8 10:21:33 2008), 转信
:
: 不是这个原因,用自己的 telnetd 有各种好处,一个是省了一次 fork, 一个是省了一对 pty 设备,自己的 sshd 的好处同上,而且还省一个 sshd 进程,防止 ssh 可能有的其他强大功能带来安全问题,比如有些人是不知道需要禁止掉 ssh 执行命令或者 port forward 的。
pty 设备有上限吗?如果有上限的话这就是个硬伤了。理解你说的好处了,多谢!
但我觉得这样做带来的坏处是维护比较麻烦,官方 ssh 要是加了个补丁得手动
合并过来,如果为了bbs 做的修改跟他们的冲突,合并就头大了。
:
: : : * kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
: : : 有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
: : : IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
:
: 这个分情况讨论,如果 mmap 不带 tmpfs 使用,你会发现进程退出的时候系统会强制刷写所有的 dirty page, 造成很大的开销。带 tmpfs 的话将就可以忍,但使用起来也很麻烦,启动时候要从硬盘上拷贝到 tmpfs, 中间为了防止断电或者死机要定期拷贝回去,sysv shm 需要的工作量跟这个差不多,而且明显要少很多开销,因此一起看就很划算了,另外这里进程退出不自动摧毁 shm 的效果反而是我们所需要的。如果他退出了就销毁了对我们来说操作还挺麻烦。
原来你们要的就是 shm 不自动摧毁的效果,赞!
:
: : 所以有clearipc.sh这个脚本。大概是历史问题?
: : : BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: : : 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
: :
: :
: : --
: : ╱╲ █ 冷咖啡离开了杯垫 ◣
: : ╰╯ █ 我忍住的情绪在很后面
: : ξ █ 拼命想挽回的从前
: : █D █ 在我脸上依旧清晰可见
: : ┳━━━━━┳ ●█ ——周杰伦《不能说的秘密》
: : ┃ ┃ ︵■█
: :
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 124.207.144.*]
:
:
: --
: 标 题: CCTV1大战CCTV4
: 发信站: 水木社区 (Thu Nov 22 18:27:46 2007), 站内
:
: CCTV4,海峡两岸,台湾物价增长4.5%,民众大叫“活不了了”。
: CCTV1,晚间新闻,大陆10月物价上涨6.6%,群众一致表示“对生活影响不大”
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 220.181.38.*]
--
FROM 211.157.41.*
【 在 kxn (时光似箭,果蝇喜欢香蕉) 的大作中提到: 】
: 标 题: Re: 问几个 kbs 代码的问题
: 发信站: 水木社区 (Tue Apr 8 10:21:33 2008), 转信
:
: 这个分情况讨论,如果 mmap 不带 tmpfs 使用,你会发现进程退出的时候系统会强制刷写所有的 dirty page, 造成很大的开销。带 tmpfs 的话将就可以忍,但使用起来也很麻烦,启动时候要从硬盘上拷贝到 tmpfs, 中间为了防止断电或者死机要定期拷贝回去,sysv shm 需要的工作量跟这个差不多,而且明显要少很多开销,因此一起看就很划算了,另外这里进程退出不自动摧毁 shm 的效果反而是我们所需要的。如果他退出了就销毁了对我们来说操作还挺麻烦。
又想了想,进程退出了 tmpfs 也在啊。。。 sysv shm 跟 tmpfs + mmap 对比:
* 第一次使用时从硬盘拷贝内容到 shm 或者 tmpfs,一个要调 shm api,一个要调
mmap/munmap
* 都需要一个服务进程定时刷新数据到硬盘上
* 进程退出后 tmpfs 和 shm 都在,重启进程可以继续使用,一个调 shm api,一个
调 mmap
没比较过 shm api 和 mmap 开销哪个大,估计差不到哪去,shm 作为一个比较老的
接口,猜测维护力度没有 mmap 强,而且 shm 有个数和大小限制,反倒觉得比较吃亏。
另外 tmpfs 里文件维护起来比 shm 容易多了。
:
: : 所以有clearipc.sh这个脚本。大概是历史问题?
: : : BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: : : 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
: :
: :
: : --
: : ╱╲ █ 冷咖啡离开了杯垫 ◣
: : ╰╯ █ 我忍住的情绪在很后面
: : ξ █ 拼命想挽回的从前
: : █D █ 在我脸上依旧清晰可见
: : ┳━━━━━┳ ●█ ——周杰伦《不能说的秘密》
: : ┃ ┃ ︵■█
: :
: :
※ 修改:·Dieken 于 Apr 8 10:46:20 2008 修改本文·[FROM: 211.157.41.*]
: : ※ 来源:·水木社区 newsmth.net·[FROM: 124.207.144.*]
:
:
: --
: 标 题: CCTV1大战CCTV4
: 发信站: 水木社区 (Thu Nov 22 18:27:46 2007), 站内
:
: CCTV4,海峡两岸,台湾物价增长4.5%,民众大叫“活不了了”。
: CCTV1,晚间新闻,大陆10月物价上涨6.6%,群众一致表示“对生活影响不大”
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 220.181.38.*]
--
修改:Dieken FROM 211.157.41.*
FROM 211.157.41.*
既然是dirty page,写一次也没啥嘛
【 在 kxn (时光似箭,果蝇喜欢香蕉) 的大作中提到: 】
: 倒不是在退出时候再写入,平时也会正常 flush, 退出时候这个写估计是内核为了某些地方实现方便,要强迫刷一次。这里看起来应该是有优化的余地,但是改 kernel 不太像是 kbs 应该干的事情。
--
FROM 124.207.144.*
pty有上限
现在kbs的sshbbsd没有跟bbs更新
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: pty 设备有上限吗?如果有上限的话这就是个硬伤了。理解你说的好处了,多谢!
: 但我觉得这样做带来的坏处是维护比较麻烦,官方 ssh 要是加了个补丁得手动
: 合并过来,如果为了bbs 做的修改跟他们的冲突,合并就头大了。
: 原来你们要的就是 shm 不自动摧毁的效果,赞!
--
FROM 124.207.144.*
频繁读写就郁闷了,改了几个字节也要刷到硬盘上。
【 在 JulyClyde (七月) 的大作中提到: 】
: 既然是dirty page,写一次也没啥嘛
--
FROM 211.157.41.*