Thread count in job resource samples
Adds a threads field to each job resource sample, so a job that starts thousands of threads while its memory sits idle shows it.
Each resource sample for a job now carries threads, the number of processes and threads alive in the job’s container at that second.
Memory in a sample is what the job has resident, and a thread uses almost none of that. A job can start thousands of threads with memUsedMB far below memLimitMB, and threads is the number that moves in that case.
The field is in GET /jobs/:id/resources and in live job.resources events. It is null on a lane that does not expose the count. Samples stored before this change do not have the field.
Jobs and what they report while they run are covered in the job docs.
