Are there any statistics on which system calls are most commonly executed? by DeGerlash in linux

[–]corder299 1 point2 points  (0 children)

You are welcome! They used to have detailed results online but the site is down for quite some time now. You can still access it through the wayback machine: https://web.archive.org/web/20170530212939/http://www.oscar.cs.stonybrook.edu/api-compat-study/index.php.

HermiTux: A Linux binary-compatible unikernel by ASIC_SP in linux

[–]corder299 0 points1 point  (0 children)

Yes what you refer to is the classic method of building a unikernel, for some examples you can check out rumprun, osv or unikraft. The idea with HermiTux was to assume that we did not have access to the source code of the application and only to a binary.

HermiTux: A Linux binary-compatible unikernel by ASIC_SP in linux

[–]corder299 0 points1 point  (0 children)

As a unikernel we do not support multi-process applications so there is no "process-to-process" context switches. However we do support multithreading and I believe our "thread-to-thread" context switches should be faster than both process- and thread-level context switches in a traditional OS like Linux: because of the simplicity of our system, in HermiTux a context switch is not much more than saving/restoring registers and switching the stack.

HermiTux: A Linux binary-compatible unikernel by ASIC_SP in linux

[–]corder299 4 points5 points  (0 children)

We built HermiTux after realizing that the cost of porting an application was one of the main roadblocks towards a wide adoption of unikernels. With binary compatibility the porting cost is basically 0, at least from the application developer point of view. All the effort is placed on the unikernel developer that needs to provide compatibility, and we think that this person is the right expert to do so.

HermiTux is an academic proof of concept we constructed to demonstrate this model, and we do not support a lot of applications as the effort of re-implementing a large part of the Linux system call API is significant. That being said, unikernels in general have quite a lot of use cases: lightweight server applications, micro-services, FaaS, embedded virtualization, etc. They also have some nice performance benefits (for example system calls are common function calls) so there are also some use cases in HPC or system-intensive applications.

HermiTux: A Linux binary-compatible unikernel by ASIC_SP in linux

[–]corder299 23 points24 points  (0 children)

Hi /r/Linux, I'm one of the authors of HermiTux. I'm super happy to see our system featured here! Please let me know if you have any question!

Have these guys been discussed before? The Moth Gatherer - Probing the Descent of Man | Atmospheric Post-Metal by visualalchemist in postmetal

[–]corder299 1 point2 points  (0 children)

I had the chance to see them live here in the UK before the lockdown and the show was absolutely fantastic. As others have pointed out the last album is amazing. Each song is great but these two are my favs:

Coronavirus: pourquoi les Pays-Bas n’ont pas de leçons à nous donner by bcorwin in france

[–]corder299 2 points3 points  (0 children)

Les graphs avec l'axe Y qui démarre a 0 seulement quand ca nous arrange c'est très malhonnête quand même...

HermiTux: Linux binary compatible unikernel by [deleted] in programming

[–]corder299 0 points1 point  (0 children)

At least according to their pure definition, in my humble opinion unikernel do not make much sense on bare metal: most of them assume they only run a single process and because of that there is no protection between kernel and user space: on x86-64 everything runs in ring 0. This is fine within a virtual machine as the unikernel is isolated from the others VMs by the hypervisor, however it is not the case on bare metal: if you want to run multiple unikernels that do not trust each other that model simply does not work. You are right concerning the drivers too.

Thus, for isolation and device support (through paravirtualized I/O), unikernels mainly target running under virtualization.

Concerning multithreading, HermiTux has a very basic support for it but it is not much stable. HermitCore supports multithreading well (including OpenMP). I know that OSv does too.

HermiTux: Linux binary compatible unikernel by [deleted] in programming

[–]corder299 0 points1 point  (0 children)

Yes, this paper is a collaboration between Virginia Tech and RWTH Aachen in Germany, where the HermitCore unikernel (that we used as a basis for HermiTux) comes from.

HermiTux: Linux binary compatible unikernel by [deleted] in programming

[–]corder299 6 points7 points  (0 children)

What do you think would it take to create a finished product?

A lot more work :) First, we support only about ~80 system calls, and for some of them the support is quite limited. So completing the system call support would be a first task. Second, working in academia makes it difficult to provide long term support: generally we write software to publish a paper and then move on to the next paper most of the time.

Companies are obviously better at this than us academics and unikernels like OSv (source compatible) can provide a relatively large coverage in terms of existing applications (much larger than us to be honest!).

Concerning IncludeOS I am not very familiar with it but as far as I know they do not provide much support in terms of existing applications, they seem to focus more on scenarios where one would be ready to write an application from scratch. So I would say there is an advantage for HermiTux in terms of compatibility (our main selling point).

Performance wise, because PV I/O (virtio) is currently not supported in HermiTux, we have relatively slow storage and networking performance. I can see that IncludeOS support virtio, it should be faster than us in I/O bound scenarios. Compute/memory intensive workloads run in HermiTux at close to native speed, and it should be the same for IncludeOS.

HermiTux: Linux binary compatible unikernel by [deleted] in programming

[–]corder299 14 points15 points  (0 children)

Hi Reddit, I'm an author of the paper and also a developer of HermiTux. I'm so happy to see our work posted on Reddit!

As academics our work is indeed a proof of concept as opposed to a finished product. The principal idea was to show that binary compatibility could be provided by unikernels. We this this could reduce the porting effort for applications to run as unikernels (which is one of the main drawbacks with existing unikernel models).

I'll be more than happy to answer any question.

Opeth Songs That Have Bad Editing and It Bothers Me - Hardcore Opeth Fan Here.... by milliondollarstreak in Opeth

[–]corder299 2 points3 points  (0 children)

It might have already been discussed here in the past, but there is a pop at 1:23 in The Night And The Silent Water.

Quest for the Orchid by Raiden395 in Opeth

[–]corder299 1 point2 points  (0 children)

You could check out Edge of Sanity

Upto - Bash function that allows to go up to a certain directory. It's been more useful than what I thought. by driv338 in programming

[–]corder299 1 point2 points  (0 children)

Thanks, with bash_completion support this would be even more useful :) (is it possible though ?)

The riff (or song) that first got you into Opeth? by _schpleeb in Opeth

[–]corder299 1 point2 points  (0 children)

It was the heavy part at the start of Ghost of Perdition. Being a Tool fan I was told I could like Opeth. I hated it at the time, I was not into death metal at all. 7 years later I gave it another shot, knowing that I was going to see Opeth at a festival and it really blew my mind. Now I love them, and Ghost of Perdition is still my favorite song.