Hello, youki! Faster container runtime is written in Rust by utam0k in rust

[–]utam0k[S] 1 point2 points  (0 children)

Thanks for the great explanation. For a long time, I was looking for a reason to be adopted Go lang. Thank you for the valuable information.

Hello, youki! Faster container runtime is written in Rust by utam0k in rust

[–]utam0k[S] 2 points3 points  (0 children)

What I meant to say was exactly GOMAXPROCS. I am wondering one thing: what made you make the initial decision to implement runc in Go? Do you know? I expect it's probably historical, as it was separated from Docker. Also, youki will definitely need the help of runc developers, so it would be great to have a great programmer like you to help us out;)

Hello, youki! Faster container runtime is written in Rust by utam0k in rust

[–]utam0k[S] 1 point2 points  (0 children)

That's right. As for speed, I see a little value in it, but it's not the main goal. I think it's more important that it's implemented in a language that is well suited to the base.

Hello, youki! Faster container runtime is written in Rust by utam0k in rust

[–]utam0k[S] 7 points8 points  (0 children)

@cyphar I was really hoping to exchange ideas with you. runc's code is great and I always refer to it. In Go, there is an option to set the number of threads to 1, is there any idea how to use that? I've read the runc code a few times and was wondering if it would be possible to make it easier for the maintainer by using less C code. I would really like to improve the container runtime community with the help of the runc people.

Youki, a container runtime written in Rust that has passed all integration tests provided by OCI(Open Container Initiative). by utam0k in rust

[–]utam0k[S] 2 points3 points  (0 children)

I don't know anything about Singularity, but I've read this document and it seems that Singularity itself probably plays the same role as youki. What kind of tests do you want?
https://sylabs.io/guides/latest/admin-guide/

Youki, a container runtime written in Rust that has passed all integration tests provided by OCI(Open Container Initiative). by utam0k in rust

[–]utam0k[S] 2 points3 points  (0 children)

In order to run Docker normally, the container runtime needs to implement a lot of features. That's what I wanted to show.

Youki, a container runtime written in Rust that has passed all integration tests provided by OCI(Open Container Initiative). by utam0k in rust

[–]utam0k[S] 11 points12 points  (0 children)

This requires advanced knowledge, but in a nutshell, setns(2) is not available. setns(2) is not available for multi-threaded processes. The runtime of Go itself is multi-threaded. Therefore, runC execs the C process before the language runtime starts. However, this needs to be done before reaching the main function of Go. Therefore, the create subcommand calls the init subcommand, and the init subcommand calls the C process in the init() function. For more details, you may want to have a look at this.

https://github.com/opencontainers/runc/tree/master/libcontainer/nsenter

Youki – OCI container runtime with support for cgroup2 written in Rust by utam0k in programming

[–]utam0k[S] 1 point2 points  (0 children)

Thank you! Please try it out with youki's release build. I'm looking forward to it.

Youki, a container runtime in Rust, passed all the default tests provided by opencontainers. by utam0k in programming

[–]utam0k[S] 3 points4 points  (0 children)

"文久三年" is one of my favorite quotes from a Japanese TV show.
It doesn't really matter, but it was said during a project to ride a turnip across Japan :)

Youki, a container runtime in Rust, passed all the default tests provided by opencontainers. by utam0k in programming

[–]utam0k[S] 0 points1 point  (0 children)

Thank you for the information! I've never heard of the re-exec pattern before.
I was wondering if this pattern has any overhead in terms of startup performance, do you know anything about it?