Git Product home page Git Product logo

jiny-kernel's Introduction

JINY (Jana's tINY kernel)

JINY is a cloud os designed from ground up for superior performance on virtual machine.

  1. What is JINY?.
  • Unlike tranditional os Jiny is thin kernel desined for cloud. Jiny provides posix interface similar to linux, so as linux app can directly run on it without recompiling.
  • Designed from ground up: It is cloud os designed from the ground up to give superior performance on virtual machine(VM). The performance gain comes from reducing isolation, reducing protection, increasing memory and cpu effeciency.
  • High priority and normal priority mode: Jiny OS runs in two modes.
    • High priority mode or Single App mode: In this mode, kernel functions like library os and does the supporting role for the app, designed with low overhead. Only one app can be launched in the OS, and app runs in the same ring as that of os(i.e ring-0). The functions which are considered “system calls” on Linux( e.g., futex,read ,..etc) are ordinary function calls in Jiny and do not incur syscall call overheads, nor do they incur the cost of user to kernel parameter copying which is unnecessary in single-application OS. fork and exec posix calls are not supported in this mode. App is launched in a different way. Apart from posix calls, Non posix API’s between app and Guest OS will further decreases latency and improves throughput of the app. Currently golang and C apps are supported in this mode.
    • Normal priority mode: Jiny kernel emulates most of the posix calls(system calls) compatible to linux, so that linux binaries can run as it is. Multiple applications can run in this mode at the same time similar to traditional OS.
  1. How different is Jiny from OS like Linux?
  • Thin kernel : Jiny is thin kernel, it is having very small set of drivers based on virtio, since it runs on hypervisor. Currently it supports only on x86_64 architecture. this makes the size of code small when compare to linux.
  • OS for Cloud: designed from groundup to run on hypervisor, So it runs faster when compare to linux.
  • Object oriented: Most of subsystems are in object oriented language c++11.
  • Non-posix api's for jvm and golang runtime system: Supports special api's for jvm and golang runtime system for running app in HP mode. Here java and golang app does not need any change.
  • Single app inside the vm: Designed to run single application efficiently when compare to traditional os.
  • Network packet processing: Most of cycles in packet processing is spent in the app context(i.e at the edge) as against in the bottom half in linux, this will minimizing the locks in the SMP. Detailed description is present in the VanJacbson paper
  1. For What purpose Jiny can be used?
  • Running single apps like JVM( any java server), golang apps, memcached etc inside the Jiny vm in high priority mode. Here the app will run much faster when compare to the same app in other vm's like freebsd or linux. Thin OS like Jiny along with virtulization hardware can act like a performance enhancer for the apps on the metal.
  • Running multiple normal priority application like any traditional unix like systems with optimizations for vm.

Performance and Benchmarks:

More details of the Benchmarks are available at Jiny-Benchmarks..

Features currently Available:

  • Page Cache: LRU and MRU based (based on the published paper in opencirrus for Hadoop)
  • File Systems:
    • TarFs : Tar file can be mounted as a root/non-root file system.
    • 9p
    • Host based file system based on IVSHM(Inter Vm Shared Memory)
  • Virtualization Features:
    • HighPriority Apps: very basic features is available(app to load as module).
    • Zero page optimization works along with KSM.
    • Elastic Cpu's: depending on the load, some of the cpu's will be rested.
    • Elastic Memory: depending on the load, some amount of physical memory can be disabled, so as host/other vm's can use.
  • Virtualization drivers:
    • Xen : xenbus, network driver using xen paravirtualised.
    • KVM : virtio + P9 filesystem
    • KVM : virtio + Network (vhost-net,vhost-user), with multi-queue
    • KVM : virtio + block (vitio-disk) with multi-queue
    • KVM : virtio + Memory ballooning
    • KVM : clock
    • Vmware : vmxnet3,pvscsi
  • SMP: APIC,MSIX
  • Networking: Third party tcp/ip stacks as kernel module.
    • TCP/ip stack from UIP ( from AdamDunkels as kernel module. The above Benchamark-2 is with uip : currently only udp is supported, need to add tcp.
    • LWIP4.0 as a kernel module:
  • Debugging features:
    • memoryleak detection.
    • function tracing or call graph.
    • syscall debugging.
    • stack capture at any point.
    • code profiling.
  • Loadable Modules: Supports loadable kernel module. Lwip tcp/ip stack compiled as kernel module.
  • User level:
    • Statically and dynamically compiled user app can be launched from kernel shell or busy box.
    • busybox shell can successfully run on top of Jiny kernel, network apps can able to use socket layer.
  • Hardware: It was fully tested for x86/64. partially done for x86_32.
  • High Priorty mode: support c apps and golang applications. golang appliction does not need any change. changes are needed to golang runtime system.

Papers:

Related Projects:

-Vmstate: Virtualmachine state capture and analysis.

jiny-kernel's People

Contributors

naredula-jana avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.