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

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

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

Там в общем то легко сделать свою внутреннюю статистику зачем еще один уровень над JPA городить. Обычно если не в кеше то пишешь в лог, что в кеше не оказалось иду в базу. По логу можно собрать в том же Splunk всю статистику когда и при каких обстоятельств не было в кеше.
...
Рейтинг: 0 / 0
12.08.2017, 00:06
    #39504304
semensemenovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
...
Рейтинг: 0 / 0
12.08.2017, 00:51
    #39504305
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
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
12.08.2017, 01:17
    #39504311
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
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
13.08.2017, 09:15
    #39504524
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
как-то так:
Код: 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
13.08.2017, 09:46
    #39504528
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
semensemenovichЯ про https://en.wikipedia.org/wiki/CPU_cache
Это задача далеко выходящая за рамки классического программирования на Java.
Спешу спросить.

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

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

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

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


спасибо.
...
Рейтинг: 0 / 0
13.08.2017, 12:46
    #39504556
semensemenovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
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
13.08.2017, 14:04
    #39504567
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
...
Рейтинг: 0 / 0
13.08.2017, 14:19
    #39504572
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
semensemenovichmaytonпропущено...

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эти все моменты, пока их сам не пощупаешь - они все равно не очевидны. Все равно тебе кажется - "щас вот тут подкручу - и станет лучше", но в большинстве случаев из этого ничего не получится. Касаемо Arrays.sort - это, мне кажется, вообще канонический случай, в котором подкрутить уже ничего не выйдет. Единственное что - это если известны некоторые особенности значений данных, которые лежат в массиве, то может можно как-то оптимизировать под эти конкретные особенности, за счет просадки на данных без этих особенностей. Вообще же, оптимизировать Arrays.sort - это примерно как сказать, что килограмм недостаточно килограммистый, англосаксы из международной палаты мер и весов охренели и диктуют миру неверное значение килограмма - и поэтому срочно нужен новый импортозамещенный эталон, дайте денег на это...
...
Рейтинг: 0 / 0
13.08.2017, 21:34
    #39504661
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
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
13.08.2017, 23:34
    #39504701
semensemenovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache miss/hit detector in Java
chabapoksemensemenovichНадо написать так дизайно хранения данных в памяти чтоб это было наиболее дружественно с точки зрения кешей CPU и соответственно достигалась бы скорость сортировки большая или равная той что выдает JDK Arrays.sort

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

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

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

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

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

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


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