logoalt Hacker News

kmeisthaxyesterday at 7:44 PM3 repliesview on HN

A read that happens to touch a particular torment nexus fd is still a long-running syscall, even if the syscall servicing routine itself is not long-running. The underlying problem is that program code that is "in a syscall" or "in an instruction" is in a special state for which interruption might not be possible or implemented well[0].

[0] Remember ITS and the PC2 problem?


Replies

EvanAndersonyesterday at 11:59 PM

For other people who didn't immediately recognize "ITS and the PC2 problem" and want the backstory it starts in the last paragraph of page 312: https://web.mit.edu/~simsong/www/ugh.pdf

show 1 reply
touisteuryesterday at 9:37 PM

I have a reproducible way to have a pwrite syscall on a specific SSD on a specific machine take 15+ seconds and completely block any syscall related to that SSD by any other thread or core during that amount of time. I tried and couldn't preempt it either (sched_fifo and preempt kernel options). I should have a look soon with Intel PT to check whether it's on the same instruction every time :)

tptacekyesterday at 10:04 PM

Oh, it totally is, it just doesn't prompt the same sense of glee and wonderment.

show 1 reply