osvの概要と実装

Download OSvの概要と実装

If you can't read please download the document

Upload: takuya-asada

Post on 30-Nov-2014

616 views

Category:

Technology


3 download

DESCRIPTION

OSvの概要と実装

TRANSCRIPT

  • 1. OSvTakuya ASADA Cloudius Systems

2. Software Engineer at Cloudius Systems FreeBSD developer (bhyve, network stack..) Software Design 3. Cloudius Systems OSv OfficeHerzliya, Israel CTO : Avi Kivity Linux KVM RedHat(KVM), Parallels(Virtuozzo, OpenVZ) etc.. QumranetRedHat 1899 4. 1, OSv 5. OSv OSvIaaSLinuxOS BSD http://osv.io/ Kivity, Avi, et al. "OSvOptimizing the Operating System forVirtual Machines." 2014 USENIX Annual Technical Conference(USENIX ATC 14). USENIX Association, 2014. 6. 7SLFDO&ORXG6WDFNIaaS$SSOLFDWLRQ5XQWLPH2SHUDWLQJ6VWHP+SHUYLVRU+DUGZDUH3URWHFWLRQDQGDEVWUDFWLRQ OS 7. &RQWDLQHUV$SSOLFDWLRQ5XQWLPH$SSOLFDWLRQ5XQWLPH2SHUDWLQJ6VWHP+DUGZDUH KLJKVLPSOLFLW KLJKUHVRXUFHHIILFLHQF KLJKSHUIRUPDQFH 8. /LEUDU26OS$SSOLFDWLRQ5XQWLPH26$SSOLFDWLRQ5XQWLPH26+SHUYLVRU+DUGZDUH KLJKVLPSOLFLW KLJKUHVRXUFHHIILFLHQF KLJKSHUIRUPDQFH KLJKLVRODWLRQ 9. OSv=OS OSLinux API API OS 10. KVM Xen VMware VirtualBox IaaS Amazon EC2 Google ComputeEngine 11. x86_6432bit aarch64 12. Java OpenJDK7,8 Tomcat Cassandra Jetty Solr OpenDaylight Gitblit Clojure JRubyRuby on Rails Ringo.JS Jython Erjang Scala QuercusPHPWordpress minecraft-server Oracle NoSQLDB 13. Java Ruby WEBRick Ruby on Rails PublifyRails mruby lua Node.js 14. haproxy memcached MySQL LevelDB SQLite twemproxy 15. mruby = 14MB Ruby = 48MB OpenJDK = 77MB 16. mruby = 65MB Ruby = 75MB OpenJDK = 110MB 17. 1DHCPZFS 18. OSv Linux ZFS TCP/IPIPv4 19. OSvREST API REST APIOSv OS()OSvAPI(CLI 20. OSvLua CLI REST API OSvSSH 21. Cloud Init YAMLREST API 22. OSv GUI WebGUI OSJVMstatistics Virtual applianceOSvCassandra, memcached, Redis 23. Capstan OSvVM Linux, Mac, Windows VirtualBox, VMware, KVM 24. Amazon EC2 AMI Google Compute Engine capstan 25. , OSv 26. OSv OSv OSvlibc OSv 27. OSv TLB JVM virtio 28. OSv C++11 ELFVFSramfsACPIlibc FreeBSD ZFSTCP/IPv4 musl-libc lua VM & CLIREST serverOpenJDKRuby 29. OSvJava appsOpenJDKOSv kernelZFSTCP/IPFBSD codeCLICOMportvirtio-blkvirtio-netschedulerlibcACPI clockramfsVFSMMELFloadersyscallemulibjvm.sojava.soC++11LuaVM RESTserver 30. + virtio-blk, virtio-net, virtio-scsi, virtio-rng vmware-pvscsi, vmxnet3 xen pv driver SATA HPETPV clock(KVM, Xen) ACPI Some legacy devices(IDE, VGA, COM, PS2) 31. Linux FedoraOpenJDK glibc musl-libcAPI APImusl-libcAPI 32. OSvlibc-fPIC-sharedPIE Executables .somain fork() / exec() 33. _lib = elf::get_program()->get_library(_command);_main = _lib->lookup(main");_main(); 34. .so 35. JVM 1VM1main OSv1Java main JVM 36. libc libcstatic link libc 37. Unix user OS libc APIstub 38. cmdline loader.elfELFbootfsramfs ZFSMBR (boot16.S) 01cmdline64128blank?loader.elf262144bootfs (bootfs.manifest)nsectorsZFS (usr.manifest) 39. cmdline --ip=eth0,10.0.0.2,255.255.255.0 defaultgw=10.0.0.1 nameserver=10.0.0.1 /memcached -u root&/cli/cli.so 40. ramfs libzfs.soZFSZFS Linuxinitramfs 41. ZFS OSv 42. /dev console, null, random, urandom ram0, vblk0, vblk0.1, zfs 43. /proc 0/maps, 0/stat mounts self/ -> 0/ 44. .1, 45. net channel Linux Socket APICPUCPU 46. net channel OSvTCP TCPpacket classifier packet classifiernet_channel net_channel net_channel 47. net channel bench resultsorig-1vcpu vjnc-1vcpu orig-4vcpu vjnc-4vcpuTCP MAERTS 36571.80 38833.18 30570.87 37904.51TCP STREAM 30078.82 46939.61 24550.12 32396.08TCP REQUEST/RESPONSE 68786.90 70834.32 62702.22 66967.52 48. zerocopy TX/RX Socket APIIO API OSvOS 49. zerocopy API ssize_t zcopy_tx(int sockfd, struct zmsghdr *zm); void zcopy_txclose(struct zmsghdr *zm); ssize_t zcopy_rx(int sockfd, struct zmsghdr *zm); int zcopy_rxgc(struct zmsghdr *zm); 50. zerocopy bench result HostOS KVMOSv Normal RX: 57.8 Gbps Normal TX: 57.6 Gbps Zerocopy RX: 72.4Gbps (125 %) Zerocopy TX: 72.1Gbps (125 %) 51. PF filter FreeBSD int pfil_add_hook(int (*func)(void *, structmbuf **, struct ifnet *, int, struct inpcb *),void *, int, struct pfil_head *); memcachedhttps://github.com/vladzcloudius/osv-memcached 122% 52. net channel from app net channel API netmap/DPDK OSvAPI 53. virtio-app virtio-net net_channelPF filter 54. 2.2 55. OS mmapCassandraJVMJNImmap huge page page eviction 56. malloc() malloc() slaballocator 57. mmap() mmap()anonymous mapping file mappingZFSmmapFreeBSDZFSbuffer cache 58. Shrinker OS OS JVMbuffer cache OSvmemcached 59. JVM ballooning OSJVM OSShrinkerJavaByteArrayGCOS OSJava JVM 60. buffer cache shrinking JVMShrinkerbuffercacheOS 61. 3, 62. Hello Worldhello.cc#include int main(){std::cout