powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Cache miss/hit detector in Java
25 сообщений из 146, страница 1 из 6
Cache miss/hit detector in Java
    #39504264
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги кто нибудь знает утилиты для подсчета cache miss/ cache hit в Java приложениях ?

Заранее спасибо.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504289
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichКоллеги кто нибудь знает утилиты для подсчета cache miss/ cache hit в Java приложениях ?

Заранее спасибо.

Там в общем то легко сделать свою внутреннюю статистику зачем еще один уровень над JPA городить. Обычно если не в кеше то пишешь в лог, что в кеше не оказалось иду в базу. По логу можно собрать в том же Splunk всю статистику когда и при каких обстоятельств не было в кеше.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504304
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504305
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichКоллеги кто нибудь знает утилиты для подсчета cache miss/ cache hit в Java приложениях ?

Заранее спасибо.
это от языка не зависит

1) счетчики performance для Linux - для любого приложения покажут. Я не использовал, хотя было нужно, т.к. работал "на живую" на продакшен сервере и ставить под рутом приложения, с которыми я первый раз сталкиваюсь, мне было боязно.

2) Intel VTune вроде с Java работать умел/умеет

https://software.intel.com/en-us/node/544058

если не побаловаться, а по серьезному... то кроме Intel VTune при всем богатстве выбора - другой алтернативы нет AFAIK. Но он платный. Java на нем НЕ профилировал, но вроде он с Java умеет работать.

Последняя trial версия, которую год назад видел, была вообще не рабочая ))) саппорт Intel рекомендовал взять/найти предыдущие версии ))) или купить ))) На фига выкладывать на сайт нерабочие trial версии - мне не понятно ))) такой хитрый маркетинг наверное )))
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504311
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VTuneAnalyzing Hardware Metrics

VTune Amplifier also provides an advanced profiling option of optimizing Java applications for the CPU microarchitecture utilized in your platform. Although Java and JVM technology is intended to free a developer from hardware architecture specific coding, once Java code is optimized for the current Intel microarchitecture, it will most probably keep this advantage for future generations of CPUs. You may use theHardware Event-based Sampling Collection data collection that monitors hardware events in the CPU's pipeline and can identify coding pitfalls limiting the most effective execution of instructions in the CPU. The CPU Metrics Reference are available and can be displayed against the application modules, functions, and Java code source lines. You may also run the Hardware Event-based Sampling Collection with Stacks when you need to find out a call path for a function called in a driver or middleware layer in your system.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504524
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
# perf list
....
  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-prefetch-misses                          [Hardware cache event]
  L1-dcache-prefetches                               [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-icache-load-misses                              [Hardware cache event]
  L1-icache-loads                                    [Hardware cache event]
  L1-icache-prefetches                               [Hardware cache event]
  LLC-load-misses                                    [Hardware cache event]
  LLC-loads                                          [Hardware cache event]
  LLC-stores                                         [Hardware cache event]
  branch-load-misses                                 [Hardware cache event]
  branch-loads                                       [Hardware cache event]
  dTLB-load-misses                                   [Hardware cache event]
  dTLB-loads                                         [Hardware cache event]
  iTLB-load-misses                                   [Hardware cache event]
  iTLB-loads                                         [Hardware cache event]
  node-load-misses                                   [Hardware cache event]
  node-loads                                         [Hardware cache event]
....
# perf stat -e LLC-load-misses,LLC-loads java .....
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504528
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichЯ про https://en.wikipedia.org/wiki/CPU_cache
Это задача далеко выходящая за рамки классического программирования на Java.
Спешу спросить.

А какие решения ты будешь принимать на основе полученных данных?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504554
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonsemensemenovichЯ про https://en.wikipedia.org/wiki/CPU_cache
Это задача далеко выходящая за рамки классического программирования на Java.
Спешу спросить.

А какие решения ты будешь принимать на основе полученных данных?

Высокопроизводительные приложения на Java

Прошу только не задавайте мне вопрос почему мы не пишем на С и С++.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504555
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev, chabapok,


спасибо.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504556
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokкак-то так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
# perf list
....
  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-prefetch-misses                          [Hardware cache event]
  L1-dcache-prefetches                               [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-icache-load-misses                              [Hardware cache event]
  L1-icache-loads                                    [Hardware cache event]
  L1-icache-prefetches                               [Hardware cache event]
  LLC-load-misses                                    [Hardware cache event]
  LLC-loads                                          [Hardware cache event]
  LLC-stores                                         [Hardware cache event]
  branch-load-misses                                 [Hardware cache event]
  branch-loads                                       [Hardware cache event]
  dTLB-load-misses                                   [Hardware cache event]
  dTLB-loads                                         [Hardware cache event]
  iTLB-load-misses                                   [Hardware cache event]
  iTLB-loads                                         [Hardware cache event]
  node-load-misses                                   [Hardware cache event]
  node-loads                                         [Hardware cache event]
....
# perf stat -e LLC-load-misses,LLC-loads java .....



Коллега, простите за немный вопрос, а Вы не знаете аналогичной тулы для MacOs ?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504567
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichmaytonпропущено...

Это задача далеко выходящая за рамки классического программирования на Java.
Спешу спросить.

А какие решения ты будешь принимать на основе полученных данных?

Высокопроизводительные приложения на Java

Прошу только не задавайте мне вопрос почему мы не пишем на С и С++.
Я не буду спрашивать про С++.

Обычно производительность современного приложения (бизнес-приложения)
зависит от производительности сети (если вы ее используете) дисков и БД.

И тюнить кеши процессора следует в том случае когда вы исчерпали возможности
тюнинга алгоритма и того что я перечислил выше.

Что у вас за алгоритм?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504612
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОбычно производительность современного приложения


Ох коллега как же вы далеки от разработки по настоящему серьезного софта.

То о чем Вы говорите это разработка энтерпрайз бизнес приложений.

Я занимаюсь несколько другими задачами.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504614
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так приблизьте меня, коллега. Устал я уже далеко так сидеть.

Что за алгоритм-то?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504615
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТак приблизьте меня, коллега. Устал я уже далеко так сидеть.

Что за алгоритм-то?

Для начала простой вопрос

Что быстрее ArrayList или LinkedList ?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504617
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichmaytonТак приблизьте меня, коллега. Устал я уже далеко так сидеть.

Что за алгоритм-то?

Для начала простой вопрос

Что быстрее ArrayList или LinkedList ?
О боже. Так издалека?

Тогда отвечу. Смотря на каких операциях. И давайте перейдем сразу к мясному меню.
Что там? Расчет сопротивления материалов? Рендеринг 3D? Копание bitcoins?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504620
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonsemensemenovichпропущено...


Для начала простой вопрос

Что быстрее ArrayList или LinkedList ?
О боже. Так издалека?

Тогда отвечу. Смотря на каких операциях. И давайте перейдем сразу к мясному меню.
Что там? Расчет сопротивления материалов? Рендеринг 3D? Копание bitcoins?

Конкретно я сортирую данные )))

Надо написать так дизайно хранения данных в памяти чтоб это было наиболее дружественно с точки зрения кешей CPU и соответственно достигалась бы скорость сортировки большая или равная той что выдает JDK Arrays.sort
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504621
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТогда отвечу. Смотря на каких операциях.

Какая из этих структур наиболее эффективно дает использование кешей CPU (минимизирует CACHE MISSES)
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504626
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichmaytonТогда отвечу. Смотря на каких операциях.

Какая из этих структур наиболее эффективно дает использование кешей CPU (минимизирует CACHE MISSES)
Ну...я-бы взял Array т.к. есть больше гарантий что соседние элементы (если они примитивы)
располагаются рядышком в адресной памяти и соотв у меня больше контроля над ситуацией.
Я могу работать блоками кратными кешам и соотв повышать эффективность отклика.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichmaytonпропущено...

О боже. Так издалека?

Тогда отвечу. Смотря на каких операциях. И давайте перейдем сразу к мясному меню.
Что там? Расчет сопротивления материалов? Рендеринг 3D? Копание bitcoins?

Конкретно я сортирую данные )))

Надо написать так дизайно хранения данных в памяти чтоб это было наиболее дружественно с точки зрения кешей CPU и соответственно достигалась бы скорость сортировки большая или равная той что выдает JDK Arrays.sort
А какой тип данных сортируется? Какой ключ? И каково value?
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504635
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichа Вы не знаете аналогичной тулы для MacOs ?

Не знаю, я не яблофил.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504643
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semensemenovichНадо написать так дизайно хранения данных в памяти чтоб это было наиболее дружественно с точки зрения кешей CPU и соответственно достигалась бы скорость сортировки большая или равная той что выдает JDK Arrays.sort

Кроме кэшей в процессоре есть целая куча других агрегатов, которые задействованы в алгоритме. И перфоманс каунтеры есть далеко не у всех агрегатов. Обычно на сколь-нибудь реальной (и даже синтетической) задаче, если вы оптимизируете алгоритм под дружественный для одного агрегата - то он будет недружественным для других агрегатов. А так, чтобы угодить всем и сразу - не бывает. Разумеется, это не означает, что вопрос производительности надо вообще забыть, а лишь означает, что особо надежд на подобного рода оптимизации лучше не возлагать.

Расскажу вам поучительную историю из личного опыта. Решил я разобраться с утилитой perf, заодно и код для оптимизации подвернулся - пример mandelbrot с сайта benchmarks game. Тут надо сделать такую ремарку. То, что на этом сайте меряется неправильно - это ясно. Однако основная цель была не мерять перфоманс - а пощупать утилиту perf. И вобщем, я внимательно посмотрел код: нашел несколько мест в которых можно, согласно моим представлениям, улучшить показатели - и поправил этот код. И ожидаемые показатели действительно улучшились, при этом все остальные либо остались на том же уровне, либо тоже улучшились. Ну супер же? Только вот, единственное, что возросло - это время исполнения. Перформенс-тюнер от бога, бгг )

На самом же деле, немножко поразмыслив над ситуацией, я понял, что там далеко не все обвешено счетчиками производительности, по крайней мере на amd. И я грубо говоря, переписав алгоритм, стал более активно использовать агрегат, у которого нет счетчика, и за счет этого получилась просадка.

Эти все моменты, пока их сам не пощупаешь - они все равно не очевидны. Все равно тебе кажется - "щас вот тут подкручу - и станет лучше", но в большинстве случаев из этого ничего не получится. Касаемо Arrays.sort - это, мне кажется, вообще канонический случай, в котором подкрутить уже ничего не выйдет. Единственное что - это если известны некоторые особенности значений данных, которые лежат в массиве, то может можно как-то оптимизировать под эти конкретные особенности, за счет просадки на данных без этих особенностей. Вообще же, оптимизировать Arrays.sort - это примерно как сказать, что килограмм недостаточно килограммистый, англосаксы из международной палаты мер и весов охренели и диктуют миру неверное значение килограмма - и поэтому срочно нужен новый импортозамещенный эталон, дайте денег на это...
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok, добавлю еще несколько наблюдений

1) Лет несколько назад я был не кодером а ДБА. Натурально. И вот как-то я заметил неоптимальность
в юзкейсах биллинговой системы. Я заметил что оператору приёма платежей не удобно искать услуги за последний
месяц и сортировку по дате услуги. Оператор делал проще. Он выбирал ВСЕ услуги клиента за все года и выводил
на экранчик PowebBuilder приложения top 10 услуг по дате. Я забил тревогу. Я видел в Oracle планы курсоров
которые бегают по всем услугам с 1996 года. Но оператору было пофиг он просто делал свою работу. Ему лень сделать
мышко-клик указывая последний месяц но не лень подождать пару-минут другую. Я крепо задумался. Сортировка - зло.
Она не нужна для всей выборки. Нужна сортировка последнего периода или двух.

2) Еще одно наблюдение. Очень часто задачи на собеседование предсавляют собой "сферическую сортировку" в вакууме.
Выставляются требования как в контестерах. Алгоритм должен работать не более чем 3000 мс и сортировать 1Гиг целых
чисел (к примеру). При этом за кадром остаются следующие вопросы
- каким образом эти данные туда попали? Телепортировались? Возможно они качались через wget/ftp/scp e.t.c. и прочее.
- как быстро процесс потребитель (consumer) или пользователь сможет этот 1Гиг данных осознать (обработать). Не лучше-ли ему дать Iterator от TreeMap? Не лучше-ли подготовить структуру данных наподобие TreeMap и тихонечко поддерживать ее в
актуальном состоянии в памяти а то и вовсе в БД (BerkeleyDB/B+Tree)?

3) Сортировка - самый тяжелый по КПД алгоритм. Можно сказать это краш-тест для канала памяти. В worst сценариях
она двигает каждый элемент коллекции и если у вас был 1Гиг worst данных - то весь Гиг будет перелопачен в памяти.
Никакому байтику не будет пощады. И с этой вводной я начинаю. Я не осуждаю сам алгоритм сортировки. К нему нет
претензии.

Я спрашиваю. Вам реально необходимо на каждое пользовательское событие сортировать? Или есть какие-то обходные
сценарии? Можно-ли изменить SR таким образом чтобы убрать сортировку за скобки нашего бизнес процесса?

Что-там с producer? Это БД? А пускай сортирует. У нее есть бесконечный объем $TMP и способность генерировать
сортированные курсоры гораздо гибче чем мы напишем на Java. SQL - реально лучший DSL для выборок. А мы прогоним
цикл транформаций на java уже по сортированной ResultSet и выдадим красивый и быстрый результат.

Не знаю что там у автора с MacOS. Явно не сервак. Не ставят серваки на Mac обычно.

4) Борьба с Arrays.sort. Выше автор попросил чтобы мы не спрашивали его о С++. Но я замечу в скобках что
часть внутренних функций типа строковых операций переписана на С++ для повышения перформанса. И возможно
что на некоторых методах Arrays::sort работает не java-кода а intrinsic. В этом случае автор попадает
в смешное положение. Впрочем автору это надо проверить.

Вообще человеку но осознать даже мегабайт сортированных данных. Ему нужна более мелкая под-выборка.
Вот ради этого и стоит пересматривать ТЗ.
...
Рейтинг: 0 / 0
Cache miss/hit detector in Java
    #39504701
semensemenovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapoksemensemenovichНадо написать так дизайно хранения данных в памяти чтоб это было наиболее дружественно с точки зрения кешей CPU и соответственно достигалась бы скорость сортировки большая или равная той что выдает JDK Arrays.sort

Кроме кэшей в процессоре есть целая куча других агрегатов, которые задействованы в алгоритме. И перфоманс каунтеры есть далеко не у всех агрегатов. Обычно на сколь-нибудь реальной (и даже синтетической) задаче, если вы оптимизируете алгоритм под дружественный для одного агрегата - то он будет недружественным для других агрегатов. А так, чтобы угодить всем и сразу - не бывает. Разумеется, это не означает, что вопрос производительности надо вообще забыть, а лишь означает, что особо надежд на подобного рода оптимизации лучше не возлагать.

Расскажу вам поучительную историю из личного опыта. Решил я разобраться с утилитой perf, заодно и код для оптимизации подвернулся - пример mandelbrot с сайта benchmarks game. Тут надо сделать такую ремарку. То, что на этом сайте меряется неправильно - это ясно. Однако основная цель была не мерять перфоманс - а пощупать утилиту perf. И вобщем, я внимательно посмотрел код: нашел несколько мест в которых можно, согласно моим представлениям, улучшить показатели - и поправил этот код. И ожидаемые показатели действительно улучшились, при этом все остальные либо остались на том же уровне, либо тоже улучшились. Ну супер же? Только вот, единственное, что возросло - это время исполнения. Перформенс-тюнер от бога, бгг )

На самом же деле, немножко поразмыслив над ситуацией, я понял, что там далеко не все обвешено счетчиками производительности, по крайней мере на amd. И я грубо говоря, переписав алгоритм, стал более активно использовать агрегат, у которого нет счетчика, и за счет этого получилась просадка.

Эти все моменты, пока их сам не пощупаешь - они все равно не очевидны. Все равно тебе кажется - "щас вот тут подкручу - и станет лучше", но в большинстве случаев из этого ничего не получится. Касаемо Arrays.sort - это, мне кажется, вообще канонический случай, в котором подкрутить уже ничего не выйдет. Единственное что - это если известны некоторые особенности значений данных, которые лежат в массиве, то может можно как-то оптимизировать под эти конкретные особенности, за счет просадки на данных без этих особенностей. Вообще же, оптимизировать Arrays.sort - это примерно как сказать, что килограмм недостаточно килограммистый, англосаксы из международной палаты мер и весов охренели и диктуют миру неверное значение килограмма - и поэтому срочно нужен новый импортозамещенный эталон, дайте денег на это...

Коллега спасибо за помощь и экспертизу

Подскажите, пожалуйста, а какие еще значимые агрегаты есть у процессора ?
...
Рейтинг: 0 / 0
25 сообщений из 146, страница 1 из 6
Форумы / Java [игнор отключен] [закрыт для гостей] / Cache miss/hit detector in Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]