题主的设想还可以更大胆点,512GB内存?瞧谁不起呢,现在的平台能支持的内存已经来到PB级了哦~[1]
(tips:1PB = 1024TB)
看了下这个问题比较新都没啥人答,大晚上的睡不着就抛砖引个玉。
如 @Naoki 所言,内存和磁盘的区别是什么?速度是一方面,还一方面是volatility,易失性。
简单来说,就是你拔了电内存里的东西就没了,但磁盘里的东西还有的。所以任你内存再大,没有non-volatile的介质也是白搭的(总不能一拔电你的系统、数据文件都全删了吧)。
那么我来预判下题主的下一个问题(假如还在知乎上问的话):
有没有一种可能,我们造出来一种介质,具有内存的访问特性和速度,但又是non-volatile的,做出来512g这种介质的计算机 这样就不需要外存了,那os这门课是不是内容可以少点?
好吧,这其实是三个问题,简短地回答就是:
(1)有没有这种介质:有,被称为Persistent Memory或者Non-volatile Memory(不是什么名不见经传的小作坊哦,是intel生产的),而且已经commercial avaliable了,这一点 @Naoki 也提到了。
(2)是不是就不需要外存(磁盘)了:可以,这也是现在的研究热点
(3)os课的内容是不是可以少点:很可惜,会更多。
知乎上关于PM(NVM、非易失存储)的讨论现在还比较少,而我现在的研究方向跟这个有关,下面就想到哪说到哪了,看见的权当图个乐,有错误也请指正~
先大体描述下PM的特点,即 “What is PM?”
如上所述,Persistent Memory既non-volatile,又“具有内存的访问特性和速度”。non-volatile很好理解,就掉电不丢呗,“具有内存的速度”也好理解,反正就贼拉的快就完了,什么ssd都靠边站,可什么叫“具有内存的访问特性”呢?
这就可以引申出一个问题,如果一种ssd特别特别快,那它是不是也可以称之为PM设备呢,毕竟ssd也是non-volatile的。
不行,因为ssd是非byte-addressable的。
翻译成人话就是,ssd只能以block为单位访问,不能“我只要访问某几个字节”。
而上面提到的真正的PM,是字节可寻址,也即byte-addressable的。
不像其他高速设备那样走PCIE总线,这种byte-addressability使得它也被插在内存总线上,像内存一样可以直接通过CPU的load/store指令访问。
这样一来,你就可以扔掉那块怎么看怎么不顺眼的SSD/HDD,在你心爱的主板上插上那么1TB的PM,开机运行了~(开个玩笑
其实现在PM还是比较贵的,而且只能在特定的平台上跑(因为内存控制器、外围io等等也要相应地支持)。我们实验室前段时间购入了一套intel的PM主板+1TB的PM,就是intel在售的intel Optane DC PM,十几万就进去了,所以一般人(家境贫寒)还是不太能接触不到这类产品的。
好,既然只用PM扔掉磁盘是可行的,那这个PM到底性能怎么样呢?
我这里引一下HeMem[2]SOSP' 21和Spitfire[3]SIGMOD'21里的数据
可以从latency、bandwith、price三个角度来看
从latency的角度,NVM和DRAM其实已经很相近了,起码已经控制在大一个数量级以内了,而SSD虽然不像HDD那样毫秒级那么夸张,但仍然也要μs级,这就奔着两三个数量级去了。
这是个什么概念呢?假如LLC发生miss,访问一次DRAM的latency约70-80ns,对3Ghz左右主频的CPU,这就意味着200-300个CPU cycle,对NVM就是400-1200个CPU cycle,而SSD的page fault(注意这只是传输第一个字节的latency)就是30000+个CPU cycle。
latency对随机访存的性能至关重要,从这一点上NVM已经算是合格了。
大容量访问的带宽,虽然在随机写的bandwidth上NVM比较拉跨,但在顺序读、顺序写、随机读方面,SSD相比NVM还是不够看的。
当然,越快的设备单位GB就越贵,从这一点上大容量存储SSD还是占优势的。
这就引出来了NVM的一个potential:更高的集成密度。
DRAM集成密度上不去的一个原因是高密度复刷带来的散热压力,印象中最近DDR5内存才有单条128G的新闻出来,但可能还要专门给内存上弄个风扇散热(笑)。而NVM是non-volatile、不需要复刷的,所以没有散热压力,单条128GB起步跟玩儿一样。对于memory footprint比较大(数百GB)的application,很明显NVM是具有极大潜力的。
从研究的角度,NVM也给操作系统、文件存储栈带来很大的可能,这两年系统、存储领域NVM真的非常热,比如纯基于NVM的文件系统(NOVA[4]FAST'16)、NVM与磁盘组成的存储系统(Ziggurat[5]FAST'19)、用NVM加速kernel的anonymous page cache(HeMem[2]SOSP'21)、也有用NVM来做kernel的file-backed page cache的(FR[6]USENIX ATC'21),甚至18年的Linux kernel 4.18就已经支持用NVM给文件系统作writeback cache了(19年intel才真的推出第一款commercial的NVM产品)
所以os课的内容不会变少,反而也要开始拥抱新的一级存储层次了~
有没有一种可能,现在已经有了512g内存的计算机
4月9日更新
给刚来的同学指南一下,回答本身不是重点,重点是评论区这个979楼的评论
大致内容是一位正在码操作系统的大佬对我等民科的谆谆教育。
感谢
@sxc邀请。非常非常感谢。
为了防止邀请我的sxc老师撤销邀请,我不得不截图。
@朱峰女士,你的答案,为了防止你进行修改,我已经截图了。没错,如你问题当中所说,礼貌是不是软弱?
当然不是。
我自问是一个普通人,在知乎得到关注多,也只是因为我勤勤恳恳,一个字一个字写得多,仅此而已。
我去咕咚网之前,当过记者,做过公关,我也不是什么名校毕业,但是我深深知道,原创是品德,是节操。做记者,报道要如实,要客观,要中立,要还原事情的本来面目。
我为什么要在微信群“红包体育”里面和你抬杠,为什么要质问你,想必你已经不记得了,然而我记得清清楚楚。
我不关注你的微信号,那是有非常重要的原因的。朱峰女士,你说你没做过亏心事,那么想必在你看来,未经他人许可引用、转载他人原创的内容,不算是亏心事了。
你不记得的事情,我一点一点帮你回忆起来吧。事情当然没有这么简单。
当你加入“红包体育”的时候,我对群主说了一句话。【我很高兴,我有不删除任何聊天软件当中聊天记录的好习惯。】
这里截图当中的日期是一直就存在的。至今我的iPhone 4S也一直在用呢,不可能改掉。
你为什么和我说抱歉,你忘了?2015年3月3日你所说的,是真的都不记得了?
当时我的反应,算是很克制的了,毕竟当着“红包体育”群里这么多人的面。
为什么我过了这么久,才再次在“红包体育”群里质问你,我想你应该明白。我知道每个人做自媒体不容易,想靠着才华变现,更加不容易,当时你肯道歉,说你会改,那么我也就得过且过了。
问题的关键在于,你改了吗?如果你改了,你就不会不经过
@式微同意,转载她的答案,而且还将她列为“第二作者”。
你的所谓声明,夹杂在你的正文内容当中,而不是正式开辟一个子栏目道歉,被诸多的信息噪声遮盖着,这就是你的诚意?
上述三张截图,是2015年6月17日早上8:43时截的。我现在还很怕诸多水军说我图片造假呢。下面两张图,是2015年3月3日晚上20:49时截的。那个时候,你的微信ID还没有“太阳表情”。
这个总不能说我作假了吧?
而你在面对我的质疑的时候,说了些什么话,你还记得吗?这就是我为什么要截图的原因。
二次编辑加了些东西,就可以等同于你自己的原创,是吗?
事实证明我当初心一软得过且过,才是真的错误。
你说了“最初开时,格式内容混乱,但转载内容标明了作者”——我还是那句话:用了我的东西,问过我吗?
你说了“微信对于转载格式有了新要求后,我们也跟着学习,把之前来源不明的全部删除。之后再也没有出现不合规的转载“——来源不明?请看看截图,你自己说过的话,怎么就这么快忘了呢?”是从虎扑、知乎、直播吧很多来源的文章“,这还算是来源不明?
你说了“暴力行为冠以道德名义,缺又恰恰选择了一个认真做事的自媒体下手,无论是出于要稿费,还是炒作涨粉,都不会实现的”——暴力冠以道德的名义?我质问你,就是暴力,你不告而拿,拿了我的答案,也拿了知乎上别人的答案,这种偷窃行为,就是道德的?
另外,请弄清楚,到底谁在炒作?我只是把原文作者式微老师带到了“体育红包”群,让她自己和你说清楚,这就是炒作?式微维护自己正当权益没有成功,自己写了篇专栏,以正视听,这叫炒作?
你说了“另外。。。您在背后诽谤我的许多聊天截图我已经给了律师。我们没做亏心事,我们礼貌但不软弱,真的,用法律途径解决,只对我们单方面有利啊。但您若真的要这样苦苦相逼,请也不吝给我一个您的地址,给您去一封律师函”。
我在背后诽谤你?请把截图放出来,让知乎用户都看看,我到底怎么诽谤你了。
你没做亏心事?没做亏心事我会质问你为什么不经过我允许转载了我的内容?
说我苦苦相逼?到底谁逼谁?“咕咚-李旸”是我在“红包体育”群里的ID,那是因为之前说过要标清楚所在的企业、媒体和姓名,所以我这样写。
我再说一次:质问你,是因为你在知乎未经我许可,擅自转载和引用了我的内容;我质问你,是因为你在知乎未经式微老师的许可,擅自转载和引用了式微老师的内容。
知乎上的回答问题,是我业余时间所为,工作忙的时候我只能下班回答问题,晚上写公众号内容,或者把知乎的答案放到我自己的公众号上去。关于足球篮球的内容,和咕咚网没有一点关系,全部是我自己的业余创作。
而你,直接找到了咕咚创始人、CEO申波先生,也就是我的最高领导,去质问我的行为是代表咕咚,还是代表个人。
我在知乎的ID和个人说明写得清清楚楚,没有和咕咚有任何的关联。你没有经过我个人的允许,转载引用我在知乎的内容,被我质疑你转载了别人的内容,居然好意思说是“法律层面的诽谤”?居然还去和我供职的企业对质?
到底是谁苦苦相逼?
所谓认真做事的自媒体,是把知乎用户的文字答案,变成自己的声音和话语,放到视频当中去,是吗?
所谓认真做事的自媒体,是未经他人许可,擅自转载、引用他人在知乎的原创答案,是吗?
最后我很想问一句:你既然深知自媒体人的成长有多么不易,为什么你还要去做“未经许可,擅自转载和引用其他自媒体人的内容”这样的事情?
最后,是我放出的所有截图的具体信息。
我在这里声明:我是知乎用户李暘,在知乎的每一个答案,在知乎的每一篇专栏文章,不敢保证完美无缺,逻辑严密,没有错别字,但全部是我自己的原创内容,任何人未经我许可,转载、引用、抄袭我的答案,即为侵权行为。
因为intel换酷睿系列商标了:
两天过去了,看的人,关注的人不少,能说得上话的看来是寥寥无几,除了青椒牛老板忆苦思甜了一下,七位靓号豹哥连回答的勇气都木有了,被吓跑了
那我先写一些目前已知的信息,权当是抛砖引玉
先说一下两个现有的低延时(low latency)的gc策略,zgc和shenandoah
zgc应该都很熟悉了,出来有一段时间了,这个是oracle官方团队做的,虽然说是官方团队,但其实是bea jrockit的人写的,以前sun的hotspot和bea的jrockit是早期比较出名的两个jvm实现,hotspot用c++实现,jrockit用c和java实现,说起来还挺好笑的,当时的评测结果是,hotspot更适合客户端,需要快速启动的程序,而jrockit更适合长期运行的程序[1],后来sun和bea都被oracle收购了,这两个jvm也就合二为一,其实更确切一点说就是,合并到hotspot中去,然后jrockit被贡献给了openjdk。然后jrockit的工程师per liden就是后来的zgc的team lead。zgc现在已经做到,大部分gc的latency在1ms以内,平均只有0.1 - 0.2ms之间,基本上无感知了,正常人条件反射的时间是0.25s,也就是250ms,经过训练的运动员,可以达到100ms,眼睛对于动画的感知,在1/60s左右,也就是17ms左右,经过训练的电竞之类的,可能可以达到90或者120fps,也就是8-9ms,就是人的极限了,现在gc最长导致程序的停顿在0.2ms以下,这种级别的停顿,人是不可能感知得到的
shenandoah是red hat的作品,现在red hat被ibm收购了,以前red hat和ibm,都有自己的jvm,分别是开源的iced tea和openj9,后者到现在还在不断出新,据说内存占用上会有一定优势,现在叫terium,北洋的下载网站[2]上对terium和openj9的支持是很好的,更新得很积极。而iced tea在openjdk出来之后,基本上就处于被放弃的状态。那red hat后来基于openjdk,制作了自己的低延时的gc策略,就是shenandoah,shenandoah对比zgc,对硬件的要求相对低一点,但是对用户给出的承诺,也低一点,就像zgc早期,承诺在10ms以内完成全部gc,shenandoah从来没有给过任何这种承诺,也就是说,我尽力。然后官方oracle提供的openjdk的build里面,并不提供shenandoah,被oracle删了,但是其他的openjdk的build,都提供shenandoah这个gc策略,一般认为,zgc更适合客户端程序,shenandoah更适合服务器端程序,因为前者更满足一些硬性指标,比如保证10ms以内一定完成,后者就没有这个承诺,但是相对应的,前者对于资源的消耗也更大,一般要腾出15%左右的内存富余给zgc使用,然后cpu处理能力会有所下降,因为拿去给zgc用了,那相比之下,shenandoah对于这种资源的硬性要求就低,但是它同样也不给这个承诺,更像是随缘,我尽量,风险你自担
这是现有两个低延时gc
那按照新的gc的论文里面写的内容看,zgc和shenandoah虽然都实现了low latency,但是是以牺牲吞吐为代价,也就是需要一定的cpu和内存消耗,你需要为low latency腾出为了实现low latency gc的资源,相应的,等同cpu和内存的硬件的处理能力,就会相应下降一点,这其实也很合理,不能说既要马儿跑,又不让马儿吃草,让机器给你干点活,总要给人家点资源
但是,新的gc策略,简称lxr
认为,可以通过基于引用计数的策略,可以进一步降低对系统资源的占用,让gc在实现低延时的同时,又不需要牺牲太多cpu和内存资源,进而使得吞吐不受影响,所以论文的标题就是:低延时,高吞吐的gc策略
然后给出了一堆的评测结果,对于评测结果,你可能会怀疑,是吧,对比的openjdk 11的结果
但实际上,论文中有具体的validity,意思就是,他们打算把这个gc port到17上去,但是他们同时也对比了17的shenandoah,发现17的shenandoah和11的shenandoah结果几乎是一样的,而且11有backported improviement,也就是在后续版本中,shenandoah的改良,都会回溯到11的高版本中去,所以shenandoah的11没什么问题,17的zgc整体策略改变了,比较难对比,这个期待后续的比较吧
所以11没什么问题,然后期待他们给出17的build
然后说一下实现的过程,这个过程很有意思,他们先用rust开发了一个工具mmtk,然后这个工具提供了openjdk(c++写的)jikes rvm(java写的java研究虚拟机)和v8(c++写的)的绑定,然后再用这个rust写的绑定工具,实现了新的gc策略
从这一点上,可以看出,现在很多软件的研发,都已经从c++上转移到其他语言上去,这并不是坏事,因为c++的代码确实太难阅读了,openjdk的开发进度,其实受到c++语言本身混乱语法颇深,就是你可以感觉到,一大堆人做了好久(接近10年),但是进步相当有限,没什么成果,相比之下,你用其他语言,往往都能做得比c++更快,而且性能更好,就像graal的jit(用java aot实现的工具),什么都没改,直接替换openjdk里面的jit也就是c1/c2,都能在一些时候有高达15%的性能提升,所以现在这个时间点,没有什么太多理由继续沿用c++,当然openjdk本身的开发还要继续,只是源码这些,正在一点一点从c++中转移出去,那最终发展成什么样子,拭目以待了
然后这个gc本身诞生的环境,也很值得玩味
这是一个高校的论文,虽然三作是谷歌,但最重要的一作和二作,都是高校,这就预示了我之前说的,现在的科学和技术的发展,哪怕是技术这种科学的应用面,也越来越多,不再是企业能够推动得了的了,企业的目的是赚钱,但是推动科学技术的进步,更多的是一项事业,所谓事业,就是你要牺牲眼前短期利益,为了长远的发展考虑,那这个投入,都是动不动十年二十年的投入,企业没有那个耐心去等待,所以最好的方式就是,企业出钱,投资到高校等研究机构中去,这样一来可以减轻政府对高校的负担,人也更专业,高校里面教授博士一大堆,每天就是搞研究,企业里面,教授都罕见,教授也不愿意放弃铁饭碗去给你修福报,同时,因为是项目制的,所以搞完研究之后,一拍两散,企业不用负担教授博士们搞完研究离开公司(也就是裁员)的成本,所以这是多赢的局面,我国政府其实也正在推动这种校企合作,产学研嘛
然后这个就很好滴展示了,将来,对于技术的推动和进步,会是怎样的一种局面,除此之外,llvm,graal这些项目,研发主体也都在高校里面,现在是连传统openjdk的开发,也在逐步转移到高校中去,企业搞研究的时代,差不多过去了
所以你看,达摩院开始大面积裁员,湖畔大学关停,但是这些高校的研究成果,开始频频出现,以前关于gc的论文,还有不少是ibm,azul之类的企业发的,现在越来越多是高校发出来的,实际上虽然国内阿里用java的频次比较高,但是你看我写了这么多,有阿里什么事吗?
技术发展到一定阶段,就必然要求更高的研发门槛,就不是随便一个企业的打工仔,就能凭着一腔热血,搞搞搞,就能有所成就的,现在慢慢都过了那个阶段了,像国外贝尔实验室,早就不行了
最后本论文的一作好像是个华人