tag:blogger.com,1999:blog-410416665291724878.post5597950201216135088..comments2022-12-19T13:52:22.907+04:00Comments on >рабочие заметки: How fast the logger could be?Ruslan Chereminhttp://www.blogger.com/profile/01023948540752159657noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-410416665291724878.post-34071132376558073862014-06-27T23:40:24.614+04:002014-06-27T23:40:24.614+04:00Понятно, спасибо.Понятно, спасибо.Alexander Toktarevhttps://www.blogger.com/profile/07858698340230694316noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-76879596067332494902014-05-27T15:45:58.975+04:002014-05-27T15:45:58.975+04:00Garbage-free -- за счет того, что по ходу работы н...Garbage-free -- за счет того, что по ходу работы ничего не аллоцируется. Все, что нужно -- создано однажды, на стартапе.Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-61422310596930571542014-04-04T21:28:37.086+04:002014-04-04T21:28:37.086+04:00Если не секрет, за счет чего достигается GC-Free ?...Если не секрет, за счет чего достигается GC-Free ?Alexander Toktarevhttps://www.blogger.com/profile/07858698340230694316noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-21802606411403972622014-02-17T23:17:09.952+04:002014-02-17T23:17:09.952+04:00Using a buffering and logging mechanism implemente...Using a buffering and logging mechanism implemented in the kernel, ETW provides a tracing mechanism for events raised by both user-mode applications and kernel-mode device drivers.<br />Вопрос в том, будут ли вызываться функции ядра для логгирования user-mode событий. Нет, если ETW сессия создаётся для in-proc ивентов.<br />ntdll!EtwLogTraceEvent в этом случае использует ntdll!EtwpTraceUmEvent (alekskhttps://www.blogger.com/profile/02146092469120958377noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-42745233119198806432014-02-17T10:13:22.604+04:002014-02-17T10:13:22.604+04:00Event Tracing for Windows (ETW) is an efficient ke...Event Tracing for Windows (ETW) is an efficient kernel-level tracing facility.<br /><br />Все low latency системы придерживаются правила "Avoid the kernel" (в общем случае даже TCP не подходит). TCP ещё можно оставить, но лезть самому лишний раз в ядро не стоит.<br /><br />P.S.<br />А вообще JNI не самая удачная штука в Java :-) . И можно даже обойтись без написания обёртки BridJ или CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-85123814232895804642014-02-17T01:57:21.891+04:002014-02-17T01:57:21.891+04:00Event Tracing for Windows (http://tinyurl.com/k35f...Event Tracing for Windows (http://tinyurl.com/k35fk7u). Пример либы: http://sergeim.codeplex.com/<br />Конечно, Windows-only, но вряд ли получится сделать локальное логгирование быстрее, чем ETW.alekskhttps://www.blogger.com/profile/02146092469120958377noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-36422967117418847712014-02-16T23:23:03.473+04:002014-02-16T23:23:03.473+04:00Что и зачем через JNI?Что и зачем через JNI?Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-45717291594387697442014-02-16T11:03:05.601+04:002014-02-16T11:03:05.601+04:00Какое это имеет значение сколько конкретно у меня ...Какое это имеет значение сколько конкретно у меня :-) ?<br />Когда измерял пропускную способность, то было 5. Сейчас 500 обычно использую, но у меня относительно мало живых данных. <br />LockSupport.parkNanos, который использует sun.misc.Unsafe .<br /><br />Если имеет значение производительность, то вот советы:<br />http://psy-lob-saw.blogspot.ru/2013/03/CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-11522110039565362522014-02-16T06:32:19.331+04:002014-02-16T06:32:19.331+04:00ETW через JNI не рассматривали в качестве альтерна...ETW через JNI не рассматривали в качестве альтернативы?alekskhttps://www.blogger.com/profile/02146092469120958377noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-11235561532568977372014-02-13T15:39:16.716+04:002014-02-13T15:39:16.716+04:00> Если буфер переполнен, то писатель паркуется ...> Если буфер переполнен, то писатель паркуется на несколько наносекунд.<br /><br />В смысле, спинлупится несколько наносекунд? И несколько -- это сколько?gvsmirnovhttps://www.blogger.com/profile/09213176675225121755noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-91922084078989731002014-02-08T17:56:56.521+04:002014-02-08T17:56:56.521+04:00Я бы ещё , наверное, AOP заюзал, но это дело вкуса...Я бы ещё , наверное, AOP заюзал, но это дело вкуса.<br />Всякие AOP-фреймворки используют манипуляции с байткодом для внедрения аспектов. Не каждый человек нормально к этому относится ;-).<br /><br /><br />Ещё можно JSR 269 заюзать. Создаём нужные аннотации. Можно даже для локальных переменных, которые в скомпилированном коде вообще не видны. Потом реализуем процессор аннотаций, который может CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-22310737694508173512014-02-08T16:26:01.214+04:002014-02-08T16:26:01.214+04:00Да, именно такой и видится конечная штуковина. Нас...Да, именно такой и видится конечная штуковина. Насчет второго процесса я не уверен, что он мне нужен -- пусть прямо логи лежат и все. Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-64654621095426379722014-02-07T16:49:45.959+04:002014-02-07T16:49:45.959+04:00И забыл ;-). P.S.
> Проблема в том, что заказа...И забыл ;-). P.S.<br /><br />> Проблема в том, что заказанное среднее время обработки транзакции в приложении <100us<br /><br />Возможно придётся писать свои очереди т.д.<br /><br />Например, моё либу можно использовать внутри одного процесса - пропускная способность одинаковая.<br />Стандартные очереди с одним издателем и одним подписчиком у меня МАКСИМУМ 11 млн. int-ов в секунду.<br />CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-22889572029594796902014-02-07T16:32:04.453+04:002014-02-07T16:32:04.453+04:00И
> Вариабельный размер записи
У меня есть так...И<br />> Вариабельный размер записи<br /><br />У меня есть такая либа. Примитивная, но хорошая :-). <br />Один процесс в сериализованном виде пишет объекты в MappedByteBuffer.<br />Другой читает оттуда. Конечно кольцевой буфер. Блокровок нет, ибо CAS из знаменитого misc.unsafe. Если нужна ОЧЕНЬ высокая пропускная способность (мне это не надо), то размер буфер можно оттюнить для cache-friendly CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-23355738177683318932014-02-07T10:44:50.541+04:002014-02-07T10:44:50.541+04:00Любопытно.
Если не задумываться, то первое, что п...Любопытно.<br /><br />Если не задумываться, то первое, что приходит на ум.<br />Логгировать в MappedByteBuffer. Если Linux, то /dev/shm (на диск не пишется ничего). <br />Потом его с помощью RDMA передавать на другой хост, где можно писать куда угодно.<br /><br />Мне кажется очень важным использование RDMA в процессе замеров, т.к. он вообще не нагружает операционную систему и даже не задействует CGenhttps://www.blogger.com/profile/02121454668347497828noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-61817591468361816632014-02-04T21:09:52.551+04:002014-02-04T21:09:52.551+04:00Запишешь ли ты 1кб или 1мб для диска почти одно и ...Запишешь ли ты 1кб или 1мб для диска почти одно и то же - поэтому разгребатор почти всегда копит буфер на запись и при достижении некоторого объема (или таймаута) скидывает на диск.Vladimir Dolzhenkohttps://www.blogger.com/profile/09353866985268525403noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-50952013142634497442014-02-04T21:08:13.830+04:002014-02-04T21:08:13.830+04:00Ты где столько данных-то берешь? Ну и если их прав...Ты где столько данных-то берешь? Ну и если их правда столько, то тут уже некуда деваться. Либо диски лучше ставить, либо в сеть сбрасывать, если карточка хорошаяRuslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-16576420170224980472014-02-04T20:54:25.988+04:002014-02-04T20:54:25.988+04:00Как минимум то, что нагребатор успевает накидать б...Как минимум то, что нагребатор успевает накидать больше, чем может разгребатор записать ни диск. Vladimir Dolzhenkohttps://www.blogger.com/profile/09353866985268525403noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-76690409900626825042014-02-04T20:24:09.395+04:002014-02-04T20:24:09.395+04:00Я вообще не планировал явно сбрасывать. Пишу в Fil...Я вообще не планировал явно сбрасывать. Пишу в FileChannel, а там пусть реализация разбирается, сколько у нее буфер. Для mmap файлов это тоже не актуально.Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-38318778088130308802014-02-04T20:20:50.795+04:002014-02-04T20:20:50.795+04:00Не очень понятно, как может вообще работа разгреба...Не очень понятно, как может вообще работа разгребатора что-то тормозить, если общая пропускная способность IO выше, чем требуется? Казалось бы, пока ты там что-то пишешь на диск -- рабочие потоки что-то пишут в буфер, никто им не мешает.Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-11331888990198054712014-02-04T15:46:32.174+04:002014-02-04T15:46:32.174+04:00Вспоминается фраза Романа Елизарова на одном из ег...Вспоминается фраза Романа Елизарова на одном из его докладов - "Как решаются проблемы с логгированием ? Правильно, не логгировать". )))<br />Это ради хохмы.<br /><br />Как было решено флушить логи ?SergeZhttps://www.blogger.com/profile/09731850001602289291noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-42838404799810367152014-02-04T13:23:23.237+04:002014-02-04T13:23:23.237+04:00Один из подводных камней на которых наткнулся - эт...Один из подводных камней на которых наткнулся - это именно IO - частый flush на диск приводит к общему проседанию, слишком редкий тоже не очень. <br /><br />Интересно какие накладные расходы дает IO - и наверняка это в зависимости от размера буфера/данных, которые пишутся. Vladimir Dolzhenkohttps://www.blogger.com/profile/09353866985268525403noreply@blogger.com