New week, new Rust! What are you folks up to?
I’ve made some progress redesigning the error types in
elastic. I’ve just rolled that in to the current async PR since they both introduce a bit of churn internally. I’m also getting a few things lined up to move all the
elastic crates into the one repo, instead of having them scattered around 4. I’ll do that after the async API is merged.
I’ve also got more changes to make to a PR in
reqwest after getting lots of great feedback last week.
The libz blitz for
mio is underway so I’ll try check off some of the points on the evaluation checklist this week.
Enjoying some holidays means that I spend less time on code, so this week was mostly cleanup work on my procfs sampling experiment. Cleaner code structure brought to you by pub(restricted), better tests that are simultaneously less repetitive and more exhaustive, comment clarifications…
One slightly more substantial piece of work is that last week, I found out that my sampling methodology was vulnerable to file structure changes, which can happen as a result of hardware hotplug or a kernel configuration change. One drawback of structure-of-array sample storage, which I wanted to try out because it has massive performance benefits (related to cache locality and vectorization) is that it does not cope very well with this situation: it’s doable, but it takes more work and thought than in the classic array-of-structure layout, where well-studied solutions exist.
Since my target is measurements of system activity over a short period of time (at most a few minutes), it was not clear whether I actually needed to support such system configuration changes. It’s a nice to have, it feels good from a correctness point of view, but it won’t be used very often compared to the amount of work involved. So I decided that a good short-term solution was to detect pseudo-file structure changes, but merely panic on them for now. In the future, if there is demand or I have time to spare, I will be able to expand these sanity checks into full hotplug support, but at this point there are more urgent things to do, such as finishing interfacing all major proc pseudo-files to see whether this project is worth pursuing to the end at all.
My next target is to finish interfacing /proc/diskstats. Since I don’t want to spend a lot of time on code this week, it may wait until the next week.