Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs/: Update landing page and intro to perf doc #375

Merged
merged 1 commit into from
Mar 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions content/docs/concepts/performance.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
---
title: Performance
description: |
Unikraft has been extensively evaluated in terms of performance. Evaluations of
using off-the-shelf applications on Unikraft results in a 1.7x-2.7x performance
improvement compared to Linux guests. In addition, Unikraft images for these
apps are around 1MB, require less than 10MB of RAM to run, and boot in around
1ms on top of the VMM time (total boot time 2ms-40ms).
Unikraft has been extensively performance-tested. Unikraft unikernels using mainstream, off-the-shelf applications boot in a few milliseconds, require a few MBs to run, and can yield a 1.7x-2.7x performance improvement compared to Linux guests.
---

<Info>
Expand All @@ -32,7 +28,7 @@
border
maxW={'2xl'}
ratio={5/3}
src="https://raw.githubusercontent.com/unikraft/eurosys21-artifacts/master/plots/fig_08_unikraft-image-size.svg"

Check failure on line 31 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 31 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
title="Figure 1"
description="Image sizes of Unikraft applications with and without LTO and DCE"
/>
Expand All @@ -41,12 +37,12 @@
border
maxW={'2xl'}
ratio={5/3}
src="https://raw.githubusercontent.com/unikraft/eurosys21-artifacts/master/plots/fig_09_compare-image-size.svg"

Check failure on line 40 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 40 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
title="Figure 2"
description="Image sizes for Unikraft and other OSes, stripped, w/o LTO and DCE"
/>


Check failure on line 45 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]

Check failure on line 45 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]
## Boot Times

In our evaluation, we use standard virtualization toolstacks instead, and wish
Expand All @@ -59,7 +55,7 @@
border
maxW={'2xl'}
ratio={5/3}
src="https://raw.githubusercontent.com/unikraft/eurosys21-artifacts/master/plots/fig_10_unikraft-boot.svg"

Check failure on line 58 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 58 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
title="Figure 3"
description="Boot time for Unikraft images with different virtual machine monitors."
/>
Expand All @@ -67,7 +63,7 @@
The results are shown in Figure 3, showing how long a helloworld unikernel needs
to boot with different VMMs. Unikraft's boot time on QEMU and Solo5 (guest only,
without VMM overheads) ranges from tens (no NIC) to hundreds of microseconds
(one NIC). On Firecracker, boot times are slightly longer but do not exceed 1ms.

Check failure on line 66 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 66 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
These results compare positively to previous work: MirageOS (1-2ms on Solo5),
OSv (4-5ms on Firecracker with a read-only filesystem), Rump (14-15ms on Solo5),
Hermitux (30-32ms on uHyve), Lupine (70ms on Firecracker, 18ms without KML), and
Expand All @@ -79,7 +75,7 @@
slowest at around 40ms. These results show that Unikraft can be readily used in
scenarios where just-in-time instantiation of VMs is needed.


Check failure on line 78 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]

Check failure on line 78 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]
## Memory Consumption

How much memory does Unikraft actually need when running real-world
Expand All @@ -91,12 +87,12 @@
border
maxW={'2xl'}
ratio={5/3}
src="https://raw.githubusercontent.com/unikraft/eurosys21-artifacts/master/plots/fig_11_compare-min-mem.svg"

Check failure on line 90 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 90 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
title="Figure 4"
description="Minimum memory needed to run different applications using different OSes, including Unikraft."
/>


Check failure on line 95 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]

Check failure on line 95 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

Multiple consecutive blank lines [Expected: 1; Actual: 2]
## Application Performance

We conduct all measurements with the same application config and where possible
Expand All @@ -104,9 +100,9 @@
Lupine, HermiTux, and Rump only support a specific version of Redis), on a
single core. We did not optimize application or kernel configs for performance,
however we took care of removing obvious performance bottlenecks for each
system, e.g., switching on memory pools in Unikraft's networking stack (based on

Check failure on line 103 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 103 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]
lwIP), or porting Lupine to QEMU/KVM in order to avoid Firecracker performance
bottlenecks. Unikraft measurements use Mimalloc as the memory allocator.

Check failure on line 105 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

Check failure on line 105 in content/docs/concepts/performance.mdx

View workflow job for this annotation

GitHub Actions / Markdown Linter

line per sentence one line (and only one line) per sentence [Expected one sentence per line. Multiple end of sentence punctuation signs found on one line!]

<Image
border
Expand Down
66 changes: 30 additions & 36 deletions content/docs/getting-started/index.mdx
Original file line number Diff line number Diff line change
@@ -1,62 +1,56 @@
---
title: Welcome to Unikraft's Documentation 👋
description: |
Unikraft is a fast, secure and open-source Unikernel Development Kit which
enables you to build custom, minimal, immutable ultra-lightweight unikernel
virtual machines quickly and easily.
Unikraft is a fast, secure and open-source Unikernel Development Kit which enables you to easily build minimal, ultra-lightweight virtual machines (unikernels).
---

This documentation is organized into guides for operators of Unikraft unikernels
who wish to run ultra-lightweight VMs; developers who wish to package
pre-existing applications into a unikernel; and, hackers, researchers and staff
who wish to extend Unikraft itself.

## Overview
Unikraft allows you to build, at compile time, extremely specialized virtual machines (known as *unikernels*). Unikraft unikernels provide:

Unikraft is a compile-time specialization strategy and alternative system for
running your application compared to containers or traditional VMs as it allows
you to completely customize the OS/kernel which facilitates the runtime of your
application. There are many benefits in running your application as a
unikernel: for more information about [the performance
advantages](/docs/concepts/performance) 🚀, [the added
security](/docs/concepts/security) 🔒 and a [positive impact on the
environment](/docs/concepts/efficiency) 🌱 please check out the [introductory
concept chapters](/docs/concepts).
🚀 High [performance](/docs/concepts/performance) and ultra lightweight deployments.<br />
🔒 Strong, hardware-level [isolation](/docs/concepts/security) (they're VMs!) and a minimal TCB.<br />
⚒️ Ease of use, including integration with Dockerfiles and other mainstream [tools](/docs/getting-started/integrations/container-runtimes).<br />
🤝 Compatibility with the [Linux API](/docs/concepts/compatibility).<br />

The Unikraft ecosystem consists of an extensive build system and tooling,
libraries and pre-built unikernel applications. All of the source code is
open-source and licensed under `BSD-3-Clause` (contributions welcome!). As an
active community, we host regular working groups, hackathons, meetups and more.
The Unikraft ecosystem consists of an extensive build system and tooling, libraries and pre-built unikernel applications.
All of the source code is open-source and licensed under `BSD-3-Clause` (contributions welcome!).
As an active [community](/community/about), we host regular working groups, hackathons, meetups and more.

## Quick-start
## Quick Start

To get started building and using Unikraft, you can use [the companion
command-line tool `kraft`](/docs/cli), allowing you to easily leverage Unikraft
unikernels at every stage of their lifecycle, from construction to production:
To begin first install the [`kraft`](/docs/cli) tool, which allows you to easily leverage Unikraft unikernels at every stage of their lifecycle, from construction to production:

```bash
curl --proto '=https' --tlsv1.2 -sSf https://get.kraftkit.sh | sh
curl -sSfL https://get.kraftkit.sh | sh
```

See [alternative installation methods](/docs/cli/install) and [CLI usage
instructions](/docs/cli).
See [alternative installation methods](/docs/cli/install) and [CLI usage instructions](/docs/cli).

## Language & Framework Guides

Unikraft works with your favorite programming languages. We've put together
step-by-step guides for these languages:
Unikraft works with your favorite programming languages.
We've put together and application [**catalog**](https://github.com/unikraft/catalog/tree/main/examples) with step-by-step guides: click on one of the following items and follow the instructions in the `README.md`:

<LanguageLinks />

## What's Next?

We've put together a number of guides in case you'd like to know more about Unikraft:

* [Basic Unikraft concepts](/docs/concepts)
* [Using the Application Catalog](/guides/using-the-app-catalog)
* [Behind the Scenes with the Application Catalog](/guides/catalog-behind-the-scenes)

## A Unikraft-Powered Cloud? KraftCloud is Here! 🔥

If you'd like to experience blazing fast, Unikraft-driven cloud deployments sign up now at https://kraft.cloud/

## Contribute

Looking to get involved? Contributions are welcome! Unikraft is an open-source
project hosted on GitHub with weekly community meetings on Discord which follow
on-going projects. There are also unclaimed projects, open issues, and
opportunities for bachelors and masters theses.
Looking to get involved?
Contributions are welcome! Unikraft is an open-source project hosted on GitHub with weekly community meetings on Discord which follow on-going projects.
There are also unclaimed projects, open issues, and opportunities for bachelors and masters theses.

Whether you're a beginner or advanced user, joining our community is the best
way to connect with like-minded people who build great products.
Whether you're a beginner or advanced user, joining our community is the best way to connect with like-minded people who build great products.

<JoinCommunityCards />
Loading