V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
efi
V2EX  ›  Linux

Intel Clear Containers

  •  
  •   efi ·
    newfag · 2015-05-20 14:04:48 +08:00 · 6593 次点击
    这是一个创建于 3468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    与内核紧耦合的透明虚拟机。

    启动速度150毫秒菊快无比。

    安全性完爆Docker。

    试用:

    • wget http://download.clearlinux.org/demos/containers/clear-containers-demo.tar.xz
    • tar xf clear-containers-demo.tar.xz (这是一个bzip2文件……)
    • cd containers
    $ sh boot-cow.sh
      # lkvm run -k ./vmlinux.container -m 1024 -c 6 --name guest-28299
      Warning: ./vmlinux.container is not a bzImage. Trying to load it as a flat binary...
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.0.0-16.container (mockbuild@kojibuild03) (gcc version 4.9.2 (Clear Linux Software for Intel Architecture) ) #1 SMP Tue May 12 17:20:44 UTC 2015
    [    0.000000] Command line: noapic noacpi pci=conf1 reboot=k panic=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 console=ttyS0 earlyprintk=serial i8042.noaux=1 rw tsc=reliable no_timer_check noreplace-smp  root=/dev/plkvm0p3  init=/usr/lib/systemd/systemd initcall_debug rootfstype=ext4 rootflags=dax,data=ordered dhcp rcupdate.rcu_expedited=1 console=hvc0 quiet dhcp
    [    0.000000] KERNEL supported cpus:
    [    0.000000]   Intel GenuineIntel
    [    0.000000] e820: BIOS-provided physical RAM map:
    [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
    [    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
    [    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000ffffe] reserved
    [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003fffffff] usable
    [    0.000000] bootconsole [earlyser0] enabled
    Check discovery
    Discovery
    Check discovery
    Check response
    Response
    
    Clear Linux Software for Intel Architecture clr hvc0
    clr login:
    

    实现原理见 http://lwn.net/SubscriberLink/644675/5be656c24083e53b/

    • 弃用QEMU,转kvmtool省略无用虚拟硬件,省略BIOS层,直接mmap内核镜像
    • 内存文件系统直接访问(DAX)和内核同页归并(KSM)降低内存开销
    • 缺点是I/O还是绕圈virtio不比Docker

    主页 https://clearlinux.org/ Clear Linux是Intel结合OpenStack搞得一些虚拟化花样。核心就是kvmtool,几个内核patch,和malloc_trim()。

    32 条回复    2015-05-22 03:48:02 +08:00
    pH
        1
    pH  
       2015-05-20 14:53:47 +08:00
    0=0 好高端,表示基本上没看的懂的
    Kabie
        2
    Kabie  
       2015-05-20 15:10:18 +08:00
    囧……早上没仔细看。。。还以为是类似CoreOS那样的发行版而已。。。
    liwei
        3
    liwei  
       2015-05-20 15:31:31 +08:00
    你订阅了LWN?为啥通过这个URL就可以访问需要订阅的内容?
    jiang42
        4
    jiang42  
       2015-05-20 16:36:55 +08:00
    @efi 弃用QEMU是指原来clear Linux用的QEMU吧?我印象里Docker用的是Linux Namespaces和Linux CGroup
    est
        5
    est  
       2015-05-20 16:44:48 +08:00
    http://erlangonxen.org/ 这帮人已经做到一个请求一个操作系统实例了。

    1秒钟之内,新分配一个Xen操作系统实例,载入web代码进程,执行,返回结果,销毁OS实例。
    zhicheng
        6
    zhicheng  
       2015-05-20 18:37:22 +08:00 via Android
    @est 技术的倒退。
    immjun
        7
    immjun  
       2015-05-20 20:00:20 +08:00
    关注一下~
    yuelang85
        8
    yuelang85  
       2015-05-20 20:12:39 +08:00
    弃用QEMU,转kvmtool省略无用虚拟硬件,省略BIOS层,直接mmap内核镜像

    好妖的做法。。。。
    efi
        9
    efi  
    OP
       2015-05-20 23:09:44 +08:00
    @est 既没用过erlang也没用过xen,太偏门了,kvm加普通distro应该是非常好用的玩具。

    麻痹的,我发个state of the art无人能应,看来v2ex的水平限于“linux下使用cp指令遇到问题”
    est
        10
    est  
       2015-05-20 23:50:30 +08:00
    @efi 挖坑失败,打回重挖。。。。。。。。。。。。。自动挖坑机器人算法有缺陷。
    est
        11
    est  
       2015-05-20 23:52:52 +08:00
    @zhicheng 你说对了。倒退到mainframe的时间分片系统去了。这是云计算的大趋势。。。。
    zhuang
        12
    zhuang  
       2015-05-21 01:05:19 +08:00 via iPad   ❤️ 1
    @efi 你自己还挂着 trolling is art 呢,别沉不住气啊,说得多的多数是水。其实 est 那个回复看上去像是 troll,反倒本身是回复里唯一看到本质的,就是个虚拟化的粒度问题。

    不过 Intel 家的东西吧,多数逃不过展品的命运,虽然背后的技术可能之后会通用化。

    qemu free 倒是不新鲜,我记得几年前就有了,可能当初 intel 做这个的时候没往这方面想。现在 container 取代 vm 不就是因为性能好么,既然目标都是 linux,就犯不着虚拟个 pc 平台出来了,砍了 qemu 之后性能就不是问题了。

    内存方面的技术不太懂,不过 intel cpu 集成内存控制器的,这方面优势应该挺大。至于外部 io,存储和网络的,我觉得取决于应用场景,安全性和性能不能兼得,是个取舍问题。
    twl007
        13
    twl007  
       2015-05-21 01:15:44 +08:00 via iPhone
    这东西跟docker有本质不同吧 docker建立在linux自身之上 调用Linux的功能来实现自己的功能 而这个就是一个轻量虚拟机 看了看介绍用了很多新的技术 然后自己实现的native kvm tools相比qemu还有功能缺失 没有图形化支持 不支持网络以及SMP

    外加DAX是设计给NVM的 他靠模拟来实现我很怀疑最终能有多少提升 而且只支持在4.0内核

    这个东西怎么看都是一个轻量虚拟机 跟docker完全是不同的技术实现 虚拟机的安全性再比docker低就不用活了 因为docker构建于linux上才导致现在没法完全隔离的
    efi
        14
    efi  
    OP
       2015-05-21 01:23:37 +08:00
    @zhuang 偶尔发个干货来检验一下水平,大失所望

    本质不是粒度,是现在钱多了,要虚拟化一切,什么微内核外内核单内核万内核复古朋克都出来了

    我用过的Intel产品就有Wayland,MESA,DRM,Beignet/OpenCL,TianoCore/UEFI,Powertop这些是。没用过的不列。
    efi
        15
    efi  
    OP
       2015-05-21 01:29:56 +08:00
    @twl007
    > 自己实现的native kvm tools相比qemu还有功能缺失 没有图形化支持 不支持网络以及SMP
    > 他靠模拟来实现我很怀疑最终能有多少提升
    > 虚拟机的安全性再比docker低就不用活了
    您RTFA了吗
    twl007
        16
    twl007  
       2015-05-21 01:46:25 +08:00
    @efi http://lwn.net/Articles/438182/

    The native tool is able to boot a kernel which can talk over a serial console. It lacks graphics support, networking, SMP support, and much more, but it can get to a login prompt when run inside a terminal emulator.
    twl007
        17
    twl007  
       2015-05-21 01:48:43 +08:00 via iPhone
    @twl007 然后底下更新的是靠着kvm virtio实现的网络 换句话说它本身还是不支持
    twl007
        18
    twl007  
       2015-05-21 01:50:53 +08:00
    @efi http://lwn.net/Articles/610174/

    DAX was originally designed for fast flash-like storage that shows up as memory to the CPU; but in a virtual-machine environment, this type of storage is easy to emulate. All we need to do on the host is map the disk image file into the guest's physical memory, and use a small device driver in the guest kernel that exposes this memory region to the kernel as a DAX-ready block device.

    Do not they emulate the DAX?
    Andiry
        19
    Andiry  
       2015-05-21 02:08:23 +08:00
    这里用DAX只是少了一次memcpy而已,底下还是disk file的mmap。性能上不能跟真正基于NVM的DAX比。
    efi
        20
    efi  
    OP
       2015-05-21 02:29:13 +08:00
    @twl007
    > http://lwn.net/Articles/438182/
    April 12, 2011

    你是没用过就开始胡扯吧。知道kvmtool代码放哪的吗?

    > map the disk image file into the guest's physical memory, and use a small device driver in the guest kernel that exposes this memory region to the kernel as a DAX-ready block device
    理解这句话吗?这个实现是要提升什么性能?
    twl007
        21
    twl007  
       2015-05-21 03:13:17 +08:00
    @Andiry 但是这样的话其实多了性能开销 而且NVM呃 我现在如果有PCI-E SSD的话要怎么开启这个特性……


    @efi 放哪有关系么 - - 东西好不好用跟他放的地方有问题么

    再者我是没用过 但是我看了他自己的公开文档了 我只是引用了文档里面的话 他文档里面写的不是么 如果文档不更新放的地方再好有什么用 还有我基于文档的理解有问题么 而且那文档还是你发出来的 Orz - - ||||

    http://lwn.net/SubscriberLink/644675/5be656c24083e53b/

    Performance in this regard is primarily measured using two metrics: startup time and memory overhead. The first is about how quickly your data center can respond to an incoming request (say a user logs into your email system); the second is about how many containers you can pack on a single server.

    他们自己说的 按照他们的标准DAX有什么贡献 实现这个减小内存消耗+提升安全性 但是我个人意见是会影响到回复请求的能力 毕竟你再怎么模拟底层依旧是传统的硬盘 而且块设备的操作方式逻辑明显跟传统硬盘差的远 这样不会有影响么
    efi
        22
    efi  
    OP
       2015-05-21 03:30:36 +08:00
    @twl007 你自己找了一个五年前LWN发的报道当作文档……
    文档在这 http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/tree/tools/kvm/README?h=tools/kvm

    这里用DAX跟NVM不NVM没任何关系。虚拟机一大开销是guest里面的块设备又要穿过一遍guest的page cache和VMM,这里只是借用DAX的功能去掉中间环节。
    twl007
        23
    twl007  
       2015-05-21 03:49:02 +08:00
    @efi 是你给出的链接 里面就有对于DAX的链接 不是我找的 - 0 -

    而且他的目的不止如此吧 按他说的第一是减小内存消耗 第二点就是可以分割不同的虚拟机对于同镜像的操作 按他说的分割完后一旦某个虚拟机重启其所有的操作都会还原 不会影响到原始镜像

    而且他靠设备驱动去在虚拟机里面模拟块设备这样不会有额外开销么 而且他这个设计也没说出是针对块设备访问开销设计的 只是借用DAX来实现zero-copy, no-memory-cost solution for getting all operating-system code and data into the guest's user space

    不过可能本机真的有硬件NVM的时候去掉他这个模拟性能估计会好的多了 - - |||| 不过NVM必须是PCI-E SSD么…… 如果普通的ssd也行的话倒是可以考虑试试看 PCI-E太贵了……
    twl007
        24
    twl007  
       2015-05-21 03:58:06 +08:00
    @efi 囧 是我错了…… 我对块设备的理解太狭隘了 呃 的确是加速了某一方面的快设备的访问速度 但是有一个问题时如果我可以直接访问虚拟机的物理内存 不通过VMM 那么每个虚拟机所占用的实际无力内存大小是动态调整的么
    Andiry
        25
    Andiry  
       2015-05-21 04:07:53 +08:00
    @twl007 NVM就是memory,DAX就是直接读写它而不通过block layer,要直接读写就必须能够byte-addressable,NAND SSD再快也不是NVM

    这里主要用处还是减少内存消耗,性能当然有提升但我认为不是主要的,因为最后还是要转换成disk读写
    twl007
        26
    twl007  
       2015-05-21 04:29:47 +08:00
    @Andiry 唔 - - 我现在也这么觉得…… 不过NVM的话不是非易失性存储器么 我查了一下硬件标准也有 系统支持的也差不多了 好像记得看服务器指标的时候看过NVM支持 不过好贵 - - ||||| 看文档说能提供系统突然断电后再开机继续从断电前的状态启动……

    不过他这样支持DAX了 其不是意味着虚拟机一但初始化之后那一大段内存地址就固定了 后期就不能再根据不同的虚拟机占用不同来动态调整实际物理内存占用了 不知道我这么理解有没有错 0 0
    Andiry
        27
    Andiry  
       2015-05-21 04:46:49 +08:00
    @twl007 mmap的地址是固定的(其实也可以remap),但是不等于数据一定要在内存中。不访问的page可以不map,访问过的page也可以swap out。无非是再次访问的时候多一次page fault。
    twl007
        28
    twl007  
       2015-05-21 04:56:19 +08:00
    @Andiry 那么这就是说将内存管理交给Linux自己了 而他不在负责具体的虚拟机内存管理 一旦初始化完虚拟机分配玩内存就完事了?

    因为最近一直在接触vmware的一套 根据vmware自己的说法他们可以动态分配物理内存给虚拟机 甚至可以通过故意挤压某些空闲虚拟机令其释放内存给其他的虚拟使用

    可能这个设计的就是轻量级虚拟机所以并不需要考虑这么多的东西?
    Andiry
        29
    Andiry  
       2015-05-21 05:21:36 +08:00
    @twl007 VMware那篇论文我也看过,上个世纪的东西了。内部机制早就改了
    pyKun
        30
    pyKun  
       2015-05-21 13:46:39 +08:00
    这个事情有应用的前途,osv 的人要惊呆了...

    还有国内的dvm

    下周赶紧立个项目研究下这事...
    qiukun
        31
    qiukun  
       2015-05-21 17:56:21 +08:00
    @efi 去北邮人 linux 版发大概有人应
    twl007
        32
    twl007  
       2015-05-22 03:48:02 +08:00
    @Andiry 查了一下文档 vmware现在依旧是动态管理 0 0 按他说的很有效 = = ||||| 等我跑个几百个虚拟机就知道有效没有了 囧

    http://www.vmware.com/files/pdf/mem_mgmt_perf_vsphere5.pdf
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:18 · PVG 00:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.