4 ms·
How does that work? How can they determine my execution time is spent waiting and not processing?
by throwAGIway 2y ago
How does that work? How can they determine my execution time is spent waiting and not processing?
- paulgb 2y agoThey use their own runtime for V8 isolates, so they have a lot of leeway into how they measure/meter it.
- navaati 2y agoAt the most basic level, your process is in the D or S states rather than R state. Cloudlflare workers are not exactly Unix processes, but the same concept applies.
- deleted 2y ago[deleted]
- CaliforniaKarl 2y agoWhen a Linux process is waiting for a socket to have data ready to read (using a system call like select, poll, or epoll), that process is put into a sleep state by the kernel. It continues accruing “wall-clock time” (“wall time”) but stops accruing CPU time. When the kernel has data for the socket, the process starts running again. The above tracking method works for containerized things. For virtualized things, it’s different: When a Linux system has nothing to do (all processes sleeping or waiting), the kernel puts the CPU to sleep. The kernel will eventually be woken by an interrupt from something, at which point things continue. In a virtualized environment, the hypervisor can measure how long the entire VM is running or sleeping.
- throwAGIway 2y agoThanks to you and the others who replied too, very insightful. You put me on the right track to learn more about this, much appreciated.
- btown 2y agoEconomically, Cloudflare can do this because they only need a V8 isolate per instance (so barely any RAM besides instantiated JS objects), whereas a Lambda needs RAM for the entire runtime environment. So many more customers can run on the same machine, even if many are waiting on I/O simultaneously. https://blog.cloudflare.com/cloud-computing-without-containers https://blog.cloudflare.com/cloud-computing-without-containe...