6 ms·
Rethinking the guest operating system
- taproot 13y agoThis sounds like a great opportunity for anyone wanting to get into os development with a few easy tasks still todo. I'm curious how you would configure and manage your applications. Like are you able to attach to the input and output streams from the host or would you still get some basic form of bash to manage it?
- rwmj 13y agoA lot like: http://www.openmirage.org/ http://www.openmirage.org/ This is an operating system that runs directly on the Xen hypervisor, written in OCaml, which does away with the usual OS abstractions.
- masklinn 13y agoOr http://erlangonxen.org/ http://erlangonxen.org/ which does away with a "traditional" OS entirely, running an erlang runtime directly on top of Xen.
- rwmj 13y agoRight, they all sound similar. What the article doesn't really emphasize enough is the aim of Cloudius is entirely about running the JVM. This of course will guarantee popularity amongst "enterprise" types. However it's still very similar to running a JVM in a process directly on the host. You could do something similar by running a JVM on the host and using cgroups to confine it. Cloudius's USP is that existing clouds are already running full guest operating systems, so their OS-v running a JVM fits into this landscape naturally. Architecturally it's nothing new. I wish Dor & Avi well though :-) (ex Red Hat associates)
- nl 13y agoBEA (now Oracle) had their JVM (JRockit) running on a hypervisor. I've never seen it in real life, but apparently it was a real thing[1] at one point. [1] http://www.javaworld.com/community/node/4304 http://www.javaworld.com/community/node/4304
- jared314 13y agoThe current product page has download links: http://www.oracle.com/technetwork/middleware/jrockit/overview/index.html http://www.oracle.com/technetwork/middleware/jrockit/overvie...
- bokchoi 13y agoSun also tried this with Maxine Virtual Edition (nee Guest VM) JVM. I can't find any updates on it so it looks like it was canned. https://kenai.com/projects/guestvm https://kenai.com/projects/guestvm http://www.youtube.com/watch?v=iHIaH12f2Ek http://www.youtube.com/watch?v=iHIaH12f2Ek
- nly 13y agoWhile interesting for bespoke applications the problem is, if you take this concept to the extreme, you end up with a traditional operating system... except it'll only run Erlang.
- mercurial 13y agoAlso https://github.com/GaloisInc/HaLVM https://github.com/GaloisInc/HaLVM (Haskell). Though I think it doesn't handle parallelism.
- pjbringer 13y agoStanford has another somewhat related project: http://dune.scs.stanford.edu http://dune.scs.stanford.edu In their case, the application runs both as a process in the host and as a guest. It gives the application access to traditional OS APIs, and allows use of processor extensions to directly access virtualized hardware. The benefits of doing this include ability for an application to do low level custom IPC, to use the page tables for garbage collection, to trace the use of system calls much more efficiently, to hook into page faults, and so on. Very cool stuff.
- drivebyacct2 13y agoSimilar to: http://erlangonxen.org/ http://erlangonxen.org/ ? Is there benefit to having an OS that runs on the hypervisor rather than being able to compile apps right in kernels that will run right on the hypervisor?
- ogrisel 13y agoWill this make it possible to use docker.io directly under OSX without having to use vagrant / virtualbox to run a linux host OS for LXC containers? Right now, only Xen, KVM and EC2 HVM are supported hypervisors. Hopefully an OSX might come with vmware support later.
- lotyrin 13y agoNo, this is sort of the opposite of containers. Instead of having an full OS-like isolated system within a single OS without virtualization, this is using virtualization but avoids having a full OS-like system inside the guests.
- hrjet 13y agoI am not sure why this is opposite of containers? Wouldn't it be possible to run a minimal POSIX OS inside a container? (genuine question, I don't know the answer to)
- ogrisel 13y agoYes I understood that. But right now if you want to use docker.io on your OSX dev box you have to run linux inside a VM to be able to leverage the docker.io features (building and testing apps in lightweight containers) for later deployment on the target cloud infrastructure. If you have OSv working both under virtualbox or vmware on your OSX dev box and under KVM or EC2 HVM on your cloud production environment, then it might be possible to have a docker.io features directly under your OSX dev box.
- lotyrin 13y agoGuess I'm confused: What features of Docker does this provide? Also, if you're willing to virtualize something, and want Docker features, why wouldn't you virtualize Docker?
- ogrisel 13y agodocker is more like a frontend to pack, ship and deploy specific applications and their configuration as "containers" to be run in lightweight isolated environments (such as LXC currently). Currently if you want to use docker under OSX you have to run it inside a Linux VM (typically using the vagrant / virtualbox). But the Linux VM is using a bunch of memory on your dev environment. If docker could run the app inside virtualbox + OSv rather than having to use virtualbox + full linux + LXC I assume you would get a more lightweight dev environment (faster boot times and less memory usage).
- nl 13y agoWow. I've played with CoreOS a bit, but this is a much more radical change. I love how people are beginning to rethink many of the things that all successful operating systems have had in common so far. The idea of using virtualization as an inherent layer in the application architecture (ht IBM OS/360) is great for flexibility.
- kalleboo 13y agoSo in the end, we're reinventing the OS with a hypervisor acting as the kernel? Are the current hypervisors better or worse than the Linux kernel at this task? What's the reason people don't just run these processes straight in a regular Linux install with properly configured users/chroots/quotas?
- harrytuttle 13y agoYes, processes are a long forgotten form of virtualization. You are spot on there. They are pretty good :)
- ddalex 13y agocgroups help solve the same problem, for tasks. I suspect running properly isolated JVMs directly on host kernel would be faster than going through the hypervisor. I would love to see benchmarking numbers. But there are two problems on why people keep reinventing the wheel: - Current solution Isn't Sexy Enough, aka Not Invented Here. - Current corporate culture drives acquisitions of tech startups based on a) business, i.e. number of users, and b) innovative technology that doesn't exist anywhere else, reinforcing previous point. All this work to come up to yet another solution to the same old problems (IBM solved machine partitioning around 70s ?) is happening because engineers love to work on their specific pet projects and not solve other people's problems. Not that there's anything wrong with that.
- jadc 13y agoJust off the top of my heads, some benefits of VMs vs processes: - you get the encapsulation/isolation out of the box - abstraction from the hardware; may not seem like a big deal if you're thinking in terms of a single machine but very useful for migration (whether live migration or cold migration) between different machines - ability to snapshot the state - arguably a smaller attack surface since you deal with fewer drivers inside the virtual machine versus a general purpose OS (VM escape exploits do exist though - no denying that).
- rjsw 13y agoUsing a VM can also reduce copying of data, particularly in the network stack.
- pantalaimon 13y agoThis seems a bit ridiculous to me. In the beginning you had [OS] -> App Then, people would put those Apps into a VM, the trend going to one VM per app. [OS] -> [VM] -> [App] Just to realize that the VM may be too much of an overhead, so now OSv comes along to cut that down, relying on the OS for memory management, task scheduling, etc, effectively ending up with [OS] -> [translation layer] -> App So that's just a glorified sandbox, why not just use LXC?
- pjmlp 13y agoWith OS/360 actually you already had [VM] -> [OS] -> [App] Which is the approach used by Windows Hyper V and VMware vSphere Hypervisor.
- harrytuttle 13y agoActually just screw all of that and have: [OS] -> App Cheaper, less administrative overhead, less abstraction, less vendor tie in (if you go POSIX for example). I think that might upset the virtualization proponents though...
- radq 13y agoWouldn't that be less secure? I understand that it's possible to use chroot and stuff, but isn't the whole point of virtualization/LXC that you have better isolation and more control over quotas and stuff? I am just curious as to why people would use virtualization at all if it is possible to accomplish the same thing using regular processes.
- harrytuttle 13y agoWould more code be more secure? To quote Theo de Raadt, who sums my opinion up nicely as well: "You are absolutely deluded, if not stupid, if you think that a worldwide collection of software engineers who can't write operating systems or applications without security holes, can then turn around and suddenly write virtualization layers without security holes." Quotas are easy enough to enforce. Most UNIX derivatives (including Linux) have disk and process quotas, some for over 3 decades. Virtualization seems to be best used for reselling (and overselling) hosts that are smaller than the physical machine and not much else. Migration/failover is a non issue if you know what you are doing and if you need larger machines, it's just more overhead on top of a dedicated host. Plus it's increased administrative cost and more expense as a whole.
- pibi 13y agoVery similar to: https://github.com/anttikantee/rumpuser-xen https://github.com/anttikantee/rumpuser-xen
- anttiok 13y agoSomeone asked me to compare the two: http://blog.netbsd.org/tnf/entry/running_applications_on_the_xen#comments http://blog.netbsd.org/tnf/entry/running_applications_on_the... tl;dr amount of code rewritten vs. reused
- blahbl4hblah 13y agoIf you could combine something like this with a deep refactoring of all the library code that an app uses and there isn't a reason why you couldn't run any app this way.
- jbellis 13y ago1000 words on why this matters: http://www.slideshare.net/eonnen/high-performance-network-programming-on-the-jvm-oscon-2012/62 http://www.slideshare.net/eonnen/high-performance-network-pr...
- mwcampbell 13y agoIf the virtualization tax is high when you care about throughput, then isn't that a case for avoiding virtualization altogether?
- mwcampbell 13y agoLike others here, I am unconvinced that there is any benefit to basically using virtual machines as heavyweight processes. The existence of at least one multi-tenant IaaS provider (Joyent) and a few multi-tenant PaaS providers (Heroku, dotCloud) using OS-level virtualization suggests that a shared kernel running multiple processes provides enough isolation.
- yalogin 13y agoI am not so sure. I would say there is a market for both. There are things that LXC based solutions cannot do yet. Solutions around VMs are very mature and offer features like live migration of apps for e.g. by which I mean they even do monitoring of apps running on the data center.
- justanother 13y agoSo we have a guest operating system that doesn't implement multitasking/timesharing because you can safely leave that up to the hypervisor. Is it just me, or is this more or less the same thing that was done with VM/CMS on IBM 370s in 1972?