-
tozhu
hello, is it possible to use oxide’s crucible storage from a local zone? eg: use crucible from OS based VM in smartos?
-
jclulow
tozhu: It would be in principle, but you'd need to write some more software; in particular, you would need an illumos block device driver that was able to speak to Crucible
-
jclulow
The way we use it at Oxide, the hypervisor, Propolis, speaks directly to Crucible as the backend storage of the emulated (NVMe, vioblk, etc) disk
-
richlowe
fancy
-
jclulow
It probably wouldn't even be that complicated, to be honest; you could get started with a usermode daemon that did the Crucible bits, and just a relatively simple "bent pipe" in the kernel. Like FUSE but for block devices. The block device surface area is not that complex, especially with blkdev
-
tozhu
jclulow: Thanks for the response,
-
jclulow
You are most welcome!
-
tozhu
so, all of the crucible is running in user space?
-
tozhu
is it possible to implement the connection base on RoCE/RDMA between crucible server and vm/crucible client?
-
jclulow
tozhu: Yes, crucible is all user mode software so far.
-
jclulow
And, if RoCE/RDMA supports TCP/IP on top, then sure!
-
jclulow
We use ethernet though, obviously.
-
tozhu
TCP/IP had some issue on the stream control, it only use about 60% of the bandwidt
-
Agnar
guys, I still fail to find my nvidia driver issues (NVRM: GPU 0000:01:00.0: Failed to copy vbios to system memory.), the question is would I get wiser if I turn on kmem flags and use kmdb voodoo? or will it be useless because without driver source we can't seen anything useful?
-
GrayJack
Does illumos have anything like linux futex?
-
rmustacc
In the sense of the direct system call?
-
GrayJack
Yes, as system call, but could be in a different way (I don' t even know if futex can be implemented without support of a system call)
-
GrayJack
My experience is more with BSDs, Darwin and Linux, and most of them have a somewhat recent system call that is futex-like and used to create fast user space synchronization primitives
-
gitomat
[illumos-gate] 16615 ena assertion failure in ena_tx_intr_work() -- Andy Fiddaman <illumos⊙fn>
-
rmustacc
I don't think of us as having something quite like that today. libc and the kernel are working together though.
-
rmustacc
That is, the system call layer isn't where we promise stability.
-
GrayJack
So, for now, there is no system call that is futex-like and libc also don't have/expose something similar at this point in time, correct?
-
GrayJack
Sorry to ask for confirmation, English is not my native tongue and also I'm neurodivergent, so I often do that to make sure I understood correctly
-
rmustacc
That's correct. There is nothing futex-like exposed today.
-
rmustacc
Is there something in particular that you're working on where it would be useful?
-
GrayJack
I'm creating my own libc, to learn more about architecting something that is so essential to C, as well to learn more about the internals of OSes that I'm exited about.
-
rmustacc
Gotcha, okay. Well, if you have other questions about the mutex subsystem, feel free to reach out.
-
GrayJack
I'm doing that in Rust, because I like the lang and it can expose C ABI function and types, but internally I often create more Rustic abstractions for the implementation details
-
GrayJack
Thanks rmustacc! If you can point out where I can learn more about illumos mutex subsystem, I would love dive right in
-
rmustacc
I don't have specific docs for it, unfortunately.
-
rmustacc
Though with a caveat that I'm likely going to have to change some of the system call ABIs to deal with some upcoming posix work to let locking be based on other clocks and use non-absolute times.
-
jbk
if you want to look at the current implementation (if you haven't found it already),
src.illumos.org/source/xref/illumos…ibc/port/threads/synch.c?r=7f9dc0ee
-
GrayJack
Thanks rmustacc and jbk, I was close! LOL I was looking for it!
-
GrayJack
If any question come up in my head, I'll come back here!
-
jbk
and obviously if you have a clone of the git repo, you can use that to figure out the path to the file from the url
-
jclulow
I am working on a CI system thing and I am trying to figure out: how would I ensure, with 100% certainty, that no more processes exist for a particular uid?
-
jclulow
I feel like it is actually surprisingly difficult
-
jclulow
you can use proc to stop a particular process, and ensure it can't fork anything more, but what if that process had already forked five children who are forking their own children and so on
-
jclulow
oh, wait, sigsend(2) maybe
-
rmustacc
Yeah, sigsendset() holds pidlock.
-
rmustacc
So it guarantees a consistent view of all procs.
-
jclulow
Nice
-
jclulow
Well that solves that problem!
-
rmustacc
And I belive it guarantees that it will hold it across that time.
-
rmustacc
sigsendset() gives you a little more flexibility if you want it.
-
jclulow
Yeah, I see that!
-
jclulow
This is a very "us" interface
-
jclulow
I like it
-
rmustacc
It's used by the tty code for doing pid/pgid.
-
jclulow
I guess I'll "sigsend(P_UID, $uid, SIGKILL)" my way to ESRCH/success!