Ява механическое сочувствие корыть нить пиннинг - PullRequest
0 голосов
/ 26 июня 2018

Учитывая, что у нас есть приложение, которое сильно загрязнено конструкциями параллелизма, используются несколько методов (разные люди работали без ясной архитектуры), несколько сомнительных блокировок, которые существуют «на всякий случай», поточно-ориентированные очереди.Загрузка процессора составляет около 20%.

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

Я рассматриваю возможность привязать родительский процесс к одному ядру., удалите все вещи, которые вызывают мембраны, замените все поточно-ориентированные структуры данных и замените все блокировки некоторыми UnsafeReentrantLock, которые просто использовали бы обычное поле ссылки, но позаботились об исключительных потребностях выполнения ...

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

Есть ли что-то, что я здесь пропускаю?

Может быть, на операции блокировки следует обратить внимание, так как они не будут отображаться при этом 20% использования?

...