On 24 Oct 2023, at 1:20, Elias Näslund wrote: > In an embedded application we're running a Yocto based linux distrubution with RT patches. One thread is writing data to a file on a NFS and another thread is once every second running chronyc tracking with popen. > The hardware is a dual core ARM with 1 gb of memory. > > The problem is that chronyc tracking doesn't return within 100 ms if both threads runs in the same application. If, however, each thread runs in its own process it works as expected. It takes normally 10-20ms for chronyc tracking to return. The write_file() thread is queuing up a lot of async IO that is then flushed by chronyc's do_exit -> put_files_struct -> filp_close, which will be a synchronous wait for all that IO. If that's not what you want I think you'll want to figure out how to drop CLONE_FILES from std::thread's clone(2) syscall. Ben