Posts Tagged ‘linuxfb’

2011年最后一次版聚小记

December 12th, 2011

感谢彭涛(bergwolf)、李凯(郁白)、朱延海和 Coly 的到场,这次版聚虽然只有一个主话题,但是由于有这么多到场者的深度参与,变得很有趣、很有收获。特别感谢 bergwolf 熬夜准备片子,还有李凯为每个环节配上小故事。

按:之前由于各种苦逼原因,版聚一度中断两个月之久,在此危急存亡的时刻,hzmangel 同学挺身而出组织了这次盛会,我很荣幸地帮助预定了盛大创新院(北京)的会议室,bergwolf 贡献了 aio 的 topic,至此本年度12月版聚得以正常举行。

到场同学

具体到场同学就不一一点名了,大家可以看邮件列表,值得一提的是,这些同学有千丝万缕的联系:

  • 有四个人是互为同学来的
  • 有两个人是同一个组的
  • 有两个人是同事
  • 有一个人和上面同一个组的人不是同一个组的,和上面两个同事的五个同事或前同事是前同事
  • 有一个人和上面四个同学中的一个是同学

同学们,你们明白了么?

序曲:async/sync vs. blocking/non-blocking

这个话题被认为上次在 SNDA 会议室已经搞清楚了,可实际情况是——

当 Coly 出现后,问题再次变得混乱起来,

好吧,我们承认,这两对概念的两两组合足以让人抓狂,结论是:大家要记好了,名字叫 non-blocking 的就是 non-blocking,名字叫 async 的就是 async,嗯。

这个争论的价值是:

  • Coly: 对于用户程序,不论是否有 NON_BLOCKING 标志,都必须检查 read 的返回值是否达到了请求值,也就是说,即使 read 返回了 >0 的值,也可能会小于请求值,如果没有,需要循环请求,直到全部读完。
  • Bergwolf: 对于文件系统的实现者,对于 buffered IO,在没有信号中断的情况下,read 请求如果不失败,返回值不应该小于请求值。如果小于请求,应该视为一个 Bug。

感谢 coly 和 bergwolf 从不同角度对这个问题的阐述。

插曲:郁白的DIO故事

事实上,本次版聚是由李凯同学来主持的,每一段他都有一个小故事。对于这里,郁白同学介绍——

他曾经使用 DIO 模拟 append,这时,如果超出 512B 的块大小,需要补齐再 truncate 回来,有时会发生 EIO,求解答

经过 coly、bergwolf、朱延海等同学的合议,认为这个问题有可能是 journal 的 bug,因为郁白同学仗着自己使用了很好的 raid 卡,对 journal 区域进行了疯狂的操作,在一次 append 中,最差情况可能有 5 次 io,而且由于他经常 sync,还丧失了合并日志操作的机会,在这种极端情况下,可能会触发 journal 的某个深藏的 bug。

正文上半场:POSIX AIO

简单地说,POSIX AIO ( aio(7) )是由 glibc 使用 pthread 在用户空间实现的,由于实现的比较粗糙,没有线程池等机制,这一实现的性能比较低劣——说到这里,有几位同学灰心地苦笑了一下。

本日出镜最高的郁白同学介绍——Linux 中的 POSIX AIO 实现没有线程池,而且有可能有锁冲突,还可能有其他bug,所以导致性能低下,大约为 pread/pwrite 的 1/3;如果自己妥善地实现一个用户空间 AIO 的话,性能和同步 IO 的性能应该是基本一致的,当然,上下文切换可能是不可避免的。

朱延海这里有一个想法,是否可以用非阻塞读写和 select/epoll 来做一个更好的 AIO,殷宇辉同学表示 libeio 可能已经这么做了。

正文下半场:Native AIO

kernel 态的 Native AIO 性能上没有什么问题,但是,它有一些限制——

  • 只支持 AIO-DIO
  • 不支持 fsync/fdatasync
  • 不支持 socket/pipe

并且,bergwolf 表示,据他前一晚上写片子时看代码,ext4 的 aio 似乎没有用上,coly 和朱延海对此不太相信,大家表示后面会再继续研究一下。

郁白同学此时又有提问:有时 get events 的时候 get 不到,这时内存中用于 io 的 buffer 是否可以安全释放?经过一段讨论,结论大致是这样的:

  • 首先,IO 用的 page 是 lock 住的,实际不会被释放掉;
  • 其次,libc 中,free 并不一定会还给内核,而可能会重复给其他进程用;
  • 这时,如果内存我们还给 libc,libc 又分给其他 malloc 用,在 IO 完成时可能回冲掉这块内存,从而造成了后一个 malloc 不安全

所以,这时的内存释放和管理需要谨慎。

总结 by 郁白

作为每个环节都有话说的李凯同学,这时给了一个总结:

他比较喜欢用户态的实现,如果有个靠谱的用户空间库,他不太喜欢使用 native 的实现。

版聚笔记到此为止,linuxfb 2012 见。

2010年最后一次Linux版聚

December 21st, 2010

从05年到10年,LinuxFB版聚在不知不觉中已经开到第六年了,六年中的,很多人都参与到了讨论中,也有很多人贡献了自己的Presentation,作为最初的组织者之一,在岁末,希望感谢所有这些参与者,当然,更要感谢两位积极的组织者

  • @hzmangel (blog):虽然说 @colyli 是我们的精神领袖,但胡子同学做了大量事务性和创造性的工作,包括我们的网站代码:http://linuxfb.net , 收集管理幻灯片 (slideshare) ,还包括会议室准备、会议餐饮支持等,是当之无愧的第一位要感谢的同学
  • @colyliblog):很委屈 Coly,放在了第二位,他是LinuxFB的精神领袖,也是最积极的推动者,不仅常年资助就餐活动、邀请重量级嘉宾、提供各种新奇纪念品,还把活动的影响力推向了国外。

相比于他们,我好像什么都没做过啊。不过我想我还是一个合格的见证者,这次继续见证版聚。

本次版聚的第一个话题是我的偶像——bergwolf (@oatgnep) 讲的 pNFS,和以往一样,每次听bergwolf 讲东西都会有新收获。这次他介绍了 pNFS 和 EMC 私有的 MPFS,pNFS 和 NFS 4.1 的关系,介绍了 pNFS 的现状、进入kernel的进程和 pNFS 中的技术概念。

通观整个Topic,感觉 pNFS 仍然处于一种厂商主导、消费者观望的状态,由于

  1. 开源的 pNFS Server可能在短时间内都无法和存储厂商的产品相抗衡
  2. 不同厂商的 pNFS 服务之间仍然不能完美互通(pNFS server和数据服务之间的接口是内部接口)

个人认为,这一规范的应用的普及可能会比较慢。

第二个话题是Leaf John介绍的ofono——Meego的Telephony软件,管理不同接口的 Modem,通过这个Topic,我才知道,原来不同的手机/Modem的接口种类很多,不一定都是接收 AT Command 的各种串口,也知道用 D-Bus 非常方便。原来对 D-Bus 只是远距离听说,现在看真的挺不错的,支持 D-Bus 一统江湖。

在两个话题之间,请 hzmangel 即兴表演了上次巴克球,我用手机拍了视频,上传到优酷了:

我和epico以及其他好几个人都非常羡慕这个玩具,嗯,考虑组团团购一个来玩。

版聚之后,我和 hzmangel、epico、bergwolf (及其可能还没过门的老婆)等人一起去日昌吃晚饭,饭桌上确定了明年年后,由本版万能的 hzmangel 来讲一下 scala,并希望到时候 wks 能来给 hzm 以足够的压力,并通过挑错给大家继续普及知识。

尽管这次版聚 colyli 没有参加,但仍有诸多到场人员,呵呵,我们的版聚越来越红火了。

LinuxFB/Gnome北京用户组联合聚会记录

August 29th, 2010

首先说,我并不是全程参与的,中午丢了钱包(这个有空介绍下挂失经验)所以去晚了,第一个话题已经开始了,后来因为承诺儿子五点钟回去,所以没有看完共创软件的大哥的问题征集,也得抱歉一下,不过,总的来说,今天的聚会还是挺充实的。

人物上的亮点

今天人物上的一号亮点无疑是wks,这包括他是今天的主角、我对他在haskell/scala方面的无限崇拜等等各种因素,不过,我还是要说一下他的不足之处:

  • 讲座的主线和范围不够清晰和集中——跑火车这个在我们这里不算是错事,不过,wks还是让我在整个讲座过程中都无法知道他到底要讲多少东西,以至于结束的时候感觉戛然而止,以为还应该有很多呢;
  • 不能很好地抓住听众的问题——实际上 bergwolf 的问题和 wks 的回答几乎一直都没对上,wks 似乎一直没有抓住 bergwolf 到底在问什么,知道最后大家一拥而上的时候,bergwolf 的问题才被明确回答。事实上,作为shanghai LSF 的受邀嘉宾,bergwolf 对文件系统的领悟在 linuxfb 范围内已经达到了一人之下、其他之上的地步,wks 如果仔细听一下应该可以知道他问的是什么的。
  • 有一点紧张——不像之前几次版聚的时候那么闲庭信步了,呵呵。

不过,总的讲,还是很不错的,以至于成了差不多唯一的主角,呃……另一位主讲是谁来着?下次一定要上台讲啊,光做人肉翻页器可不行啊,也得上来被大家虐啊——不过,他回答bergwolf的问题的时候倒是蛮一针见血的,更加简单直接。

人物上的其他亮点都集中在Coly不知从何而来的幻灯片上,对了,bergwolf真的结婚了么?那我们以后调侃的话题不就少了么?

内容:Btrfs

说到内容,btrfs是我此行的唯一目标,通过wks的讲解,我理解了这么几个问题:

  • btr原来是B-Tree
  • btrfs实现了多个物理磁盘弄在一起的功能,但我觉得这个功能有点过了,尽管有coly的支持,我仍然觉得这个支持有点过于铺张了一些
  • btrfs创建文件系统很快——这个上次我在测试SSD的时候实际亲手见识过了,不过忘了
  • 根据我的理解,btrfs的subvolume就是为了支持snapshot而提供的功能,至于能提供多个tree做不同的挂载点这一点,我觉得75%-80%的意义上说是副产品
  • btrfs的snapshot很好很强大
  • 一口气在目录下可以建立一万个文件,嗯,wks手很快,那个命令行似乎是 touch {1..10000},中间几个点没看清,反正我没用过
  • btrfs的用户态工具命令行功能很强大

嗯,差不多了,最后是

致谢

感谢wks和他的师父coly。

LinuxFB版聚总结

April 28th, 2010

2010年4月25日,linuxfb(北邮真情流露Linux版)在老据点之一——北邮教三某实验室的会议室举行了一月一次的版聚。由于聪明的同学们都看了天气预报没来,追星的同学都因为Coly同学缺席没来,版聚史无前例的只有11人出席,不过,还是一如既往的深入、一如既往的愉快。在此感谢李东阳、彭涛和Casparant同学的分享。参加的同学在Google Wave里有记录,搜索“linuxfb with:public”就能找到了,这里不再赘述,仅仅提一下几位突出贡献同学:

  • bergwolf,也就是彭涛同学,每次在自我介绍时都会一如既往地将戒指从无名指挪到中指,这次贡献了一个很时髦的话题,一会再介绍,希望下次再聚会的时候不再需要这么挪戒指了——呃,我不是说要他提前挪好哈,大家明白吧。
  • lidongyang,李东阳每次来都给我留下深刻印象,尤其这次,带来了第一个精彩话题,当然,一会还是会介绍到的。
  • 上面两位同学各带来一位围观者,不同的是,含蓄的东阳不想让在他组实习的mm来,而bergwolf则邀请来一位师妹,不知道这两位可爱的mm是不是以后还会来参加啊,呵呵
  • jerry/文捷,还有saka,都是来参加版聚新同学,热烈欢迎他们,saka让我们想起了久违的LeoVirgo,啥时候能再聚聚啊
  • bunbun是版聚的老面孔了,搞技术的女孩,呵呵,redsand后继有人啊,话说如果redsand下次带宝宝来的话,我也带我家儿子来,哈哈。
  • gmoto,linuxfb五年版聚史中的第一偶像派的帅哥,这次也来了,可惜没有topic和众多的男女fans
  • hzmalgel,版聚的元老,这次也一如既往的拒绝承认有女朋友,一样的活跃,而且参与了中间的caspar的VPN环节,试用了cooler提供的VPN账号,当然,没成功
  • casparant,本次版聚的多面手,测试了投影仪,担任了摄影师,还在第二个话题中介绍了多种翻墙技巧。

李东阳这次介绍了一个ocfs2的一个bug,大概是这样的,fsstress的truncate会出错,内存中和磁盘上的元数据不一致,东阳同学在VFS的direct write位置定位了这个问题。背景是这样的:OCFS2的Direct Write不允许改变元数据,以获得更好的并发性能。但如果发现有O_DIRECT而不能directio,就送回VFS去做buffered io,可是,VFS的aio还是会检查 o_direct,回到 ocfs2_direct….,最后,该函数只查看 offset,不判断是否超出inode的范围,于是就出现了问题。最终的修改比较直接,就是要确定不要回到direct,只要确定进aio,就一定进aio,这样就不会出问题了。曲折的debug故事一直是我们比较喜欢的话题,非常有趣。

最后,bergwolf介绍了ATA的新指令TRIM,用于宣称某个块已经没有用了,可以被删除了,希望来帮助SSD更主动地垃圾回收,从而提升性能。2.6.33的内核已经支持了TRIM,btrfs和ext4也会使用TRIM。但是TRIM指令的设计师非常匪夷所思的,不能进入queue,类似barrier,这样,需要等前面的指令执行完才能执行TRIM,而TRIM完成之后才能有新的指令进入queue,一次的时延有上百毫秒,如果大量使用这个命令的话,反而会影响性能。结论是——这个命令暂时没啥好处……

总之,感谢讲话题的三位同学:lidongyang,bergwolf,casparant,也感谢永远的组织者,colyli和hzmangel,当然,我也会一如既往的记下去。

BeijingLSF笔记

October 25th, 2009

BeijingLSF = Linux Storage Filesystem Workshop in Beijing,这是 Coly 等大牛组织起来的一次国内 Linux 内核存储相关部分的主要开发者的聚会,会议由 Novell 提供了一定的资助,在 linuxfb 的老巢北邮教三楼召开,参与者来自 Novell, EMC, Oracle, Intel, Fujisu, Freescale, Lenovo, Xteam 等公司,2/3 的第二天 AKA 大会的讲演者都在 BeijingLSF 上介绍了他们的工作,来参加 AKA 大会的 Herbert Xu 也大驾光临,直接从机场来到了会场。作为 Coly 的信徒,我有幸参加了这一峰会,当然写Blog是必须的了。

正如我在最后所说的,我本来是跟着 Coly 来看大牛的,结果一不小心还被大牛围观了,这基本是由于我来自一个让中国的开源社区感到陌生而又熟悉的公司——中国移动。嗯……稍后再来感慨,先谈谈这次会议的实况。

第一个时段是 Coly 亲自主持的关于 ocfs2 和 DLM 的讨论,Coly 分享了很多开发过程中遇到的问题,Oracle 和 Novell 的同学基本上主导了这个话题的讨论,其他公司的同学也参与其中了。给我留下比较深刻印象的是那个32/64位 lvb 的问题以及最后的那个 race condition 的问题。

第二个时段应该是马涛主持的讨论,但他把这个时段几乎完全贡献给大家作为自我介绍时段了,也就是在这个时段,我从瞻仰变成了被围观,呵呵。不过,说实话,我最感兴趣的是马涛介绍的 reflink,对于大量使用虚拟机的情况,这一特性无疑非常具有吸引力,而且也获悉 btrfs 也具有类似特性,我确实希望能尝试一下这个文件系统了。

接下来胡欣蔚介绍了 clvm 等内容,之前尝试过 drbd8,不过还是被 md,dm 这些模块搞得有些晕晕的,呃……对于我们的某些应用来说,多节点构成一个逻辑卷的需求是切实存在的,以后可能有机会常和这些东东打交道。

下午,吴锋光首先介绍 writeback 和 readahead,大家对 SSD 的讨论很热闹,这也是世界范围的关注重点,头一次听说 SSD 的随机读取速度可能会超过连续读,非常有趣的情况,我想,下个月我会测试一下SSD的实际情况,可能会有更多可发言的东西,呵呵。

接下来,归剑锋介绍了 cgroup iocontroller,了解了很多相关的开发进程以及背后的八卦信息,当年我在翻译LWN的CFS组调度的文章的时候接触过 cgroup 这个概念,这次听归剑锋的介绍,对 pdflush 的问题印象比较深刻。

最后的一个session是联想研究院的卢亿雷介绍他们的网盘系统的实现和一些问题,这个系统和我们的应用有些类似的地方,我也参与了一些性能相关的讨论。

结束前的light talk环节,EMC的同学们还提出下次可以分享一些不涉及机密的非开源产品的技术内容,其他参与者也表达了美好的憧憬,这让我也不由得期待明年还能有机会参与其中,呵呵。

本来没想在这里一直一天的,毕竟由于上周出差已经两个星期没和儿子有一整段时间在一起了,不过,内容和嘉宾太吸引人了,Herbert Xu这样的名人要来,如果不住在河北省,谁会早走呢,呵呵,不仅学到很多东西,而且认识了很多大牛,不虚此行。感谢 Coly,感谢组委会,感谢 Novell,感谢志愿者彭涛和李劼……

Switch to our mobile site