← All posts tagged io

fillest
Linux ? disk io nolife Что почитать, чтобы в самых подробностях понимать, что происходит с данными от вызова write(fd, buf, len) до окончательного физического "размещения" данных внутри харда?
Есть ли что-нибудь хоть отдалённо плавно усваиваемое и информативное по аналогии с этим (пусть и не в одном месте), или придётся, укусив псилоцибина и запив бензином, читать, интерпретировать и трейсить в голове листинги ведра, дров и прошивок?

Ящетаю, это должен знать каждый инженер, сталкивающийся с хранением данных и решающий любые проблемы уровнем выше совсем жуниоров. И, поэтому, каждый раз, когда я прихожу в районный магазин за хлебом, я не знаю как смотреть честным людям в глаза. От незнания таких базовых вещей меня охватывает жгучий, мучительный стыд, кассиры укоризненно качают головой, охранники провожают меня взглядом, полным презрения, а стоящие недалеко от входа весёлые джентльмены и вовсе освистывают.
fillest
tech debug io profile perf (i have no idea, зачем я это сюда пишу, причем первым постом, но что-то вдруг захотелось)
Листая в brendangregg.com пример с мускулом, тут же вспомнил про временно отложенные неразрешенные монгопытки и осознал одну хитроту. Но сначала — прелюдия.
Вышло, что вороне где-то б-г послал кусочек монги, под мелкой но нагрузкой. Запросы тормозят, причем периодически разными скачками вроде бы без явного паттерна и корреляции с другими показателями, а для усиления ощущений она обитает на эмозоне и не умещается в память. Про себя она какие-то чиселки рассказывает, но бессвязные — не складывается картина, вобщем. Но периодически плотно шуршит iowait. И вроде и не локи, и user/sys не высок.
Закрадывается мысль — а вдруг это и правда io-боттлнек. И вариант "послать аффтарам бомбу с гвоздями и открыткой; переписать уже наконец под человеческий поцгрес" возможно просто так и не сработает (а тестить долго, сложно и синтетично). Особенно, учитывая что это омасон, т.е. неизвестно, что или кто там вместо харда, и сколько еще лохов сидят с тобой на железке и чем занимаются; прям как в старое доброе пыховековье.
И вот щас щелкнуло, что сферическое упирание в io (как и во всё прочее) — очень неоднозначная штука, т.к. io можно закодерировать неэффективно. Размеры страниц-буферов, шедулинги операций, журнал, да мало ли что еще. Мысль-то тривиальная конечно, но при прошлом обдумывании почему-то не возникла.
И вот интересно, как такое диагнозировать. Из первого, что приходит в голову — потрейсить какие-то сисколлы (впрочем с mmap-то это наверно вместе с ведром надо трейсить..), порисовать всякие длины, locality. Вобщем, что-то такое как профайлинг, но под адскую специфику disk io. А для исключения облакодилд погонять генерилку искуственного ровного io на предмет скачков (но это опять же, синтетика).
В рукаве еще есть карты под задачу — частично вынести запись за очередь с ручным батчингом, например, но хочется именно научиться аналитически отлаживать, по-инженерному, мол.