There's a comment on this thread that sums up what I'm seeing:
ghostty-org/ghostty#3224 (comment)
tldr: I'm seeing threads with "high iowait" in htop when the system is practically idle and there shouldn't be any i/o. This is a cosmetic issue that may be resolvable by passing a single flag to a single function.
According to my preferred language model, the technical reason for this "high iowait" is that nr_iowait is set for threads sleeping in io_cqring_wait(). There is a flag that can be passed to disable this marking; this was recommended by the same commenter in the thread mentioned above:
ghostty-org/ghostty#3224 (comment)
The commit that the commenter linked is the one that added the flag and it's worth reading:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.15-rc1&id=07754bfd9aee59063f8549f6e4d455eae636ecc7
By default, io_uring marks a waiting task as being in iowait, if it's
sleeping waiting on events and there are pending requests. This isn't
necessarily always useful, and may be confusing on non-storage setups
where iowait isn't expected. It can also cause extra power usage, by
preventing the CPU from entering lower sleep states.
There's a comment on this thread that sums up what I'm seeing:
ghostty-org/ghostty#3224 (comment)
tldr: I'm seeing threads with "high iowait" in htop when the system is practically idle and there shouldn't be any i/o. This is a cosmetic issue that may be resolvable by passing a single flag to a single function.
According to my preferred language model, the technical reason for this "high iowait" is that nr_iowait is set for threads sleeping in io_cqring_wait(). There is a flag that can be passed to disable this marking; this was recommended by the same commenter in the thread mentioned above:
ghostty-org/ghostty#3224 (comment)
The commit that the commenter linked is the one that added the flag and it's worth reading:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.15-rc1&id=07754bfd9aee59063f8549f6e4d455eae636ecc7