- A Mini-Introduction To Information Theory : a Cool introduction to the concept. Nice and succinct.
- Deep Reinforcement Learning Doesn't Work Yet : There is a lot of buzzes around using machine learning for health care. In the UK the prime minister just announced a massive program to leverage AI to help the NHS tackle cancer and other ailments. However, as this paper suggest. We are a very long way from having a practical solution. And I feel that there is a little bit too much hype and with that fund diverted from solutions that will actually benefit the overstretched health care system now. I do not say that ML will not work, just that there is better spending than throwing IT stuff at it.
- A Rust-based Unikernel : love unikernel tech .. and now we have a nice Rust
A blog about life, Engineering, Business, Research, and everything else (especially everything else)
Showing posts with label unikernel. Show all posts
Showing posts with label unikernel. Show all posts
Tuesday, July 03, 2018
[Links of the day] 03/07/2018 : Information Theory introduction, Deep Reinforcement learning doesn't work (yet), Rust based Unikernel
Wednesday, May 09, 2018
A look at Google gVisor OCI runtime
Google released a new OCI container runtime: gVisor. This runtime aim at solving part of the security concerns associated with the current container technology stack. One of the big argument of the virtualisation crowd has always been that the lack of explicit partitioning and protection of resource can facilitate “leakage” from the containers to the host or other adjacent containers.
This stem from the historical evolution of containers in Linux. Linux has no such concept of native containers. Not like BSD with Jails or Solaris with Zones. Containers in Linux are the result of the gradual emergence of a stack of various security and isolation technology that was introduced in the Linux kernel. As a result, Linux ended up with a highly broad technology stack that can be separately turned on / off or tuned. However, there is no such thing as a pure sandbox solution. The classic jack of all trade curse, it’s a master of none solution.
The Docker runtime (Containerd) package all the Linux kernel isolation and security stack (namespaces, cgroup, capabilities, seccomp, apparmor, SELinux) into a neat solution that is easy to deploy and use.
It allows the user to restrict what the application can do such as which file it can access with which permission or limits resource consumption such as networks, disk I/O or CPU. It allows the applications to share resources without stepping on each other toes happily. Also, limits the risk any of their data being accessed while sitting on the same machine.
With a correct configuration ( the default one is quite reasonable ) will allow blocking anything that is not authorised and in principle protect from any leak from a malicious or badly coded piece of code running in the container.
However, you have to understand that Docker has some real limitation already. It has only limited support for user-namespace. The user-namespace allows applications to have UID 0 permission within the containers ( aka root ) while the containers and user running has a lower privilege level. As a result, each container would run under a different user ID without stepping on each other toes.
All of these features rely on the reliability and security (as in no bugs) of the Linux kernel. Most of Docker advanced feature relies on kernel features. And getting new features is a multi-year effort, it took a while for good resource isolation mechanism percolates from the first RFC to the stable branch by example. As a result, Docker and current container ecosystem are directly dependent on the Linux kernel update inertia as well as its code quality. While being excellent, no system is entirely free of bug, not to mention the eternal race for patching them when they are discovered and fixed.
Hence the idea is to, rather than having to share the kernel between all the containers, have one kernel per container. Explicitly limiting potential leakage, interference and reduce the attack surface. gVisor adopts this approach, which is not new as KataContainers already implemented something similar. Katacontainers is the result of the fusion of ClearContainer (intel) and runV (hyper). Katacontainers use KVM as a minimalistic kernel dedicated to the container runtime. But, you still need to manage the host machine to ensure fair resource sharing and their securitisation. This additional layer of indirection limits the attack surface as even if a kernel bug is discovered you will be challenged to exploit it to escape to another an adjacent container or underlying one as they are not shared.
gVisor can use a KVM as kernel; however, it was initially and is still primarily designed around ptrace. User Mode Linux already used the same technique, which is to start a process in userspace for the subsystem that will be running on top. Similarly to a hypervisor model used by virtual machines. All the system calls will be executed using the permission of the userspace process on behalf of the subsystem via an interception mechanism.

Now, how do you intercept these system calls which should be executed by the kernel? UML and gVisor divert ptrace primary goal ( which is debugging ) and inject a breakpoint in the executable code to intercept and stop for every system call execution. Once caught the new userspace kernel will execute the call on behalf the original process within userspace. It works well, but as you guessed, there is no free lunch. This method what heavily used by the first virtualisation solution. But rapidly, processor vendors realised that offering hardware-specific acceleration method would be highly beneficial ( and sell more at the same time).
KVM and other hypervisor leverage such accelerator. Now you even have AWS and Azure deploying completely dedicated coprocessor for handling virtualization related acceleration. Allowing VM to run almost that the same speed as a bare metal system.
And like Qemu leveraging KVM, gVisor also offer KVM as underlying runtime environment. However, there is significant work to be done to enable any container to run on to of it. While ptrace allow to directly leverage existing Linux stack, with KVM you need need to reimplement a good chunk of the system to make it work. Have a look at Qemu code to understand the complexity of the task. This is the reason behind the limited set of supported applications as not all syscalls are implemented yet.
As is, gVisor is probably not ready yet for production. However, this looks like a promising solution providing a middle ground between the Docker approach and the Virtualization one while taking some of the excellent ideas coming from the unikernel world. I hope that this technology gets picked up, and the KVM runtime becomes the default solution for gVisor. It will allow the system to benefit from a rock-solid hardware acceleration with all the paravirtualisation goodies such as virtio.
Labels:
container
,
docker
,
google
,
isolation
,
kernel
,
kvm
,
linux
,
performance
,
security
,
unikernel
,
virtualization
Tuesday, October 24, 2017
[Links of the Day] 24/10/2017 : W3C Payment request API, Xen Unicore, Kafka Summit
- Payment Request API : Interesting to see that now all browser implement the w3c payment api. One step closer to more fluid banking service consumption.
- Xen Unicore : Proposal to build a core set of functionality and library allowing users to build unikernels targeted at specific applications without requiring the time-consuming, expert work that building such a unikernel requires today.
- Kafka Summit : Videos & Slides from the San Francisco 2017 are now available.
Labels:
API
,
conference
,
kafka
,
links of the day
,
payment
,
unikernel
,
xen
Thursday, October 19, 2017
[Links of the Day] 19/10/2017 : Distroless minimal container images, Strangeloop and CppCon 2017
- Distroless : a toolkit for creating container images which contain only your application and its runtime dependencies. No package shells, managers, any other programs. This is really awesome as you always end up with a lot of clutter in your layer. too often you see apt-get update ; apt-get upgrade in your Dockerfile. Or you could simply move to Golang and enjoy a From scratch environment! [talk] [video]
- Strangeloop: a very good review of the excellent strange loop conference. Every time I watch some of these talks, I tell myself I should get into functional programming .. Then life ( and three kids under 6 ) takes over. [slides] [videos]
- CppCon : another dev conference, this time C++. Some interesting talks, especially the includeOS one. Which provides a C++ microkernel functionality by simply including a single header #include
! A lot of in-depth and technical talks, give it a look if you are a C++ dev. [slides] [videos]
Labels:
C++
,
conference
,
container
,
functional programming
,
links of the day
,
unikernel
Friday, November 18, 2016
[Links of the Day] 18/11/2016 : Extreme Scale OS, GPU Stream Benchmark, Neural Net that produce neural net
- Neural Architecture Search with Reinforcement Learning : Neural net that produce neural net. Cool thing is that the authors are able to beat human generated model for text processing and deliver equivalent performance for image processing model. Who needs human anymore....
- Extreme-Scale Operating Systems : multi-OS research project at Intel aiming to be the node OS for HPC machine. Intel is trying to deliver a polymorphic OS that can quickly adapt to new software and hardware without the need for specialized solution like it exist commonly on high end HPC systems. To some extend it looks like the Jailhouse system. Where the HW is physically partitioned. A few core are dedicated for management, while the rest are partitioned and are running lightweight kernel (LWK) + application. Note that I really resent Intel for always trying to rename things that are commonly used. LWK are Unikernel dammit.. Anyway its jailhouse + unikernel for HPC.
- GPU-STREAM : Stream benchmark for GPU, much needed benchmark to understand and quantify memory transfer rate to from global memory device on GPUs.
Labels:
benchmark
,
gpu
,
HPC
,
intel
,
jailhouse
,
links of the day
,
operating system
,
unikernel
Wednesday, November 02, 2016
[Links of the Day] 02/11/2016 : Unik fast easy unikernel builder, Noms decentralized DB and dev books
- Noms : decentralized database using GIT principle. There is some nice feature in there, such as content addressing (no duplicate), append only and last but not least : decentralized. Which means you can fork / merge, disconnect etc.. for seconds, hours or years. Like GIT, however i am not sure yet how they handle merge and conflict resolution....
- Programming books : Good list of books for developers.
- Unik : Tool by EMC to compile unikernels directly rather than going the binary route. Its nice to see an increased effort to facilitate unikernel adoption. Previously i talked about the
effort. This is a slightly different approach here as it all to build unikernel in almost any langage using a tool chain as intuitive as docker. If this trend continue we might see a decline in container adoption with a move to unikernel. But its not for the short term as the optimisation cycle of the containers technology didn't fully kick in yet. [video] [slides]
Labels:
book
,
database
,
decentralized
,
emc
,
links of the day
,
unikernel
Friday, July 22, 2016
[Links of the day] 22/07/2016 : Blockchain distributed storage, Docker use cases, Run Go in unikernel
- BlockStack : a distributed storage system that uses blockchains on Bitcoin to securely define a global name space. The name’s are all tied to values which representing URI(URL)s to storage systems like AWS S3 but could be any cloud storage service.
- Use Case track : Videos from the Use Case track at @DockerCon 2016
- Atmanos : this is really cool, this project enable you to compile go code and run it as a unikernel on top of Xen
Labels:
blockchain
,
docker
,
golang
,
links of the day
,
storage
,
unikernel
Monday, March 07, 2016
[Links of the day] 07/03/2016 : Unikernel single address spaces, Breaking stuff in production, 10 years of workload scheduling
- Single address spaces : unikernel approach to use a single address space can provide a great deal of speed up however it requires to rethink the way code works. Its quite attractive but as the article explain, their is trade off. To be honest, I think that unikernel will be great for the whole synchronous programming model (spdk-dpdk-pmem, etc..), where we have a swarm of small highly optimized service tight to specific hardware consumed by other service on more generic compute infrastructure.
- Breaking Things On Purpose : if you are not ready to brak stuff in production , your product is not ready.
- Borg, Omega, and Kubernetes - ACM Queue : 10 years of evolution of workload scheduling.
Labels:
breaking
,
links of the day
,
scheduling
,
unikernel
Monday, February 08, 2016
[Links of the day] 08/02/2016: EU cloud tender, Solo5 unikernel and microXchg 2016 microservice conf
- EU cloud tender : EU just awarded 34 Millions Euro for its private/public cloud based on openstack to BT. However there is still a tender for cloud brokerage in the pipeline allowing breakout to public cloud. AWS, Azure and consort might still be able to sneak in the backdoor. Notable fact, openstack API dominate the overall document specifications.
- solo5 : native native x86_64 kernel that, when linked against an application becomes a unikernel. Works with qemu-kvm and virtio driver.
- microXchg 2016 : all the video from the microservice conference. If you have to watch one I highly recommend this one by Adrian Cockcroft : Analyzing Response Time Distributions for Microservices. Note that you can find his slide deck here and the code that comes with it here & here
Labels:
aws
,
azure
,
cloud
,
EU
,
links of the day
,
microservices
,
openstack
,
performance
,
unikernel
Monday, January 25, 2016
[Links of the day] 25/01/2016: Unikernel Debugging, Web Data mgmt book, Nano Lambda
- Unikernels are unfit for production : while i don't agree with a lot of the arguments ( and the lack of concrete data supporting them) one really struck : unikernel are really hard to debug. Unless you have a toolkit like Erlang where you can remotely login / debug unikernel are really a tough nut to crack when it comes to root cause analysis. Yes you can always "turn it on and off again" but this is just masking a problem that can come back and bite you hard later.
- Webdam : Web data management book that tries to cover the many facets of distributed data management on the Web. Really great read if you want to have a good overview of the web scale industry and the techniques used.
- Nano Lambda : the rise of the next PaaS stack is coming. I predict we will see more and more startup venturing in the Lambda platform field. However what they really need to work in is offering simple and intuitive tools to orchestrate and scale the system. The "simple" running lambda code will not be sufficient for long enough.
Labels:
book
,
Distributed systems
,
lambda
,
links of the day
,
paas
,
unikernel
,
web
Friday, January 22, 2016
On Docker absorbing Unikernel
Docker just bought Unikernel. This is an interesting move from this company. It allows Docker to make a counter move to its usual strategy which revolved around expanding its deployment practice, management tools and platform management offer.
The main attraction of unikernels, for Docker and its users, are performance and security. While some may argue that performance might be a red herring. You have to remember that, with unikernel, Docker is able to make a significant foray in the world of :
In order to make unikernels attractive to the current its current developer base. Docker will have to put tremendous efforts in creating user friendly DevOps mechanism that made Docker popular. This is a significant challenge as unikernels often requires specific tools and application build to run. Making this offer transparent and easy to use will make or break this acquisition. Capstan from OsV is a step is a right direction to achieve that by example.
However, Docker might have a darker motivation :
- networking where real time performance in NVF is crucial (Rump is really nice for that). Storage might also be another use case.
- IoT where speed and minimalist footprint provide a significant advantages
In order to make unikernels attractive to the current its current developer base. Docker will have to put tremendous efforts in creating user friendly DevOps mechanism that made Docker popular. This is a significant challenge as unikernels often requires specific tools and application build to run. Making this offer transparent and easy to use will make or break this acquisition. Capstan from OsV is a step is a right direction to achieve that by example.
However, Docker might have a darker motivation :
- if docker successfully embrace the unikernel tech, will accelerate the vendor lock in due to its inherent nature.
- if docker fails it would have simply extinguish a competitor and part of a competing tech with it.
Tuesday, April 21, 2015
Links of the day 21 - 04 - 2015
Today's links 21/04/2015: #NVM architecture, #HPC storage fabric, Cluster sqlite, Just in time #Unikernel Quic protocol
- Architecture-level Designs using Emerging Non-volatile Memories : describe architecture techniques necessary for building efficient and reliable systems with NVMs.
- Jitsu : Just-In-Time Summoning of Unikernels using a Xen toolstack that satisfies the demands of secure multi-tenant isolation on resource-constrained embedded ARM devices.
- Fortissimo : A3CUBE Fortissimo Foundation, computing/storage converged solution and data engine, provides a very fast and scalable platform for storing and retrieving data items with 100s of gigabytes/s of throughput and Mega IOPS. But as always hte catch is that it requires a proprietary fabric to do so which limits its adoption [Architecture] [Benchmark]
- rqlite : Cluster of sqlite using Raft protocol, really cool implementation. I wonder if it could be used as a for of fast ACID compliant distributed cache for SQL DB [github]
- quic : Google pushing for their udp based protocol as IETF standard
Labels:
architecture
,
cluster
,
HPC
,
links of the day
,
network fabric
,
nvm
,
protocol
,
sqlite
,
unikernel
Thursday, April 02, 2015
Links of the day 02 - 04 - 2015
Today's links 02/04/2015: Billing & payment, #Bitcoin Lightning transactions, Compression benchmark, #unikernel
- Billing & Payments Engineering Meetup II : lots of very interesting talk about the difficulty of processing payements at scale while maintaining compliance and security [first meetup]
- Lightning Networks Part I - Revocable Transactions : very good break down by Rusty Russel of the Lightning Network paper. The promise of this work is exceptional: instant reliable transactions across the bitcoin network.
- Squash Benchmark : compression benchmark with 28 datasets, each of which is tested against 23 plugins containing 39 codecs at every compression level they offer—the number varies by codec, but there are 178 in total, yielding 4,984 different settings. The benchmark is currently run on 8 different machines (with more coming soon!) for a current grand total of 39,872 configurations.
- A VM for every URL: interesting experiment where the author tries to run a single unikernel per URL, not really anything significant can be derived from the experiment but it shows the direction the industry is going for.
Labels:
benchmark
,
billing
,
bitcoin
,
compression
,
links of the day
,
payment
,
unikernel
Tuesday, January 20, 2015
Links of the day 20 - 01 - 2015
Today's links 20/01/2015: Bloom filters, #Unikernel, API framework
- Dablooms : scalable, counting bloom filter library [github]
- Performance Evaluation of OSv for Server Applications : where performance matter unikernel can significantly improve your applications performance and stability under load.
- Swagger: nice API framework
Labels:
API
,
bloom filter
,
links of the day
,
unikernel
Thursday, December 11, 2014
Links of the day 11 - 12 - 2014
Today's links 11/12/2014: OS conf, #Unikernel : #Rump , #jitsu , atlas #devops, bgp image format
- New Directions in Operating Systems conference: video slide and audio of the 2014 conference, selected talk :
- Rump Rump kernels and {why,how} we got here
- Rumprun : unikernel for Posix application on top of rump
- jitsu : Just-in-Time Summoning of Unikernels
- Userland Networking and Userspace networking : when the network stack move out of the kernel
- BPG : Frabice Bellard is a new image format based on HEVC and supported by most browsers with a small Javascript decoder. You can see the comparison with other format here
- Atlas : bridge the gap between the devops split by bundling all 5 Hashicorp tools into a single SaaS solution. Really nice toolkit.
Labels:
devops
,
image
,
links of the day
,
networking
,
unikernel
Wednesday, September 10, 2014
Links of the day 10 - 09 - 2014
Today's links: #docker , #unikernel , #jit , #virtualization , #IDF14 , Business Model
- Just-In-Time Summoning of Unikernels : spawning CloudOs ( #OSv, #MirageOS , ..) on demand via forwarding DNS. Interesting concept but probably limited by how fast you can spawn these minions.
- Freemium for Enterprise software : Should start-up and established company use the gaming industry freemium model? Not sure.. but interesting perspective.
- Bare-metal, #Docker Containers, and #Virtualization: The Growing Choices for Cloud apps #IDF14 presentation which discuss discusses bare metal, containers, and virtualization as different options for running workloads with an interesting comments by Scott Lowe on its blog
Labels:
bare-metal
,
business model
,
docker
,
IDF14
,
jit
,
unikernel
,
virtualization
Subscribe to:
Posts
(
Atom
)














