Optymalizacja wątków Java przy 100% wykorzystaniu procesora
Mam aplikację, która akceptuje pracę w kolejce, a następnie obraca się, aby zakończyć pracę na niezależnych wątkach. Liczba wątków nie jest ogromna, powiedzmy do 100, ale są to zadania intensywne i mogą szybko podnieść CPU do 100%.
Aby jak najszybciej wykonać jak najwięcej pracy: czy mogę lepiej uruchamiać więcej wątków, gdy muszę wykonać więcej pracy i pozwolić programistom wątków Java obsłużyć dystrybucję pracy, czy też stanie się mądrzejszy i zarządzający obciążeniem pracą, aby utrzymać procesor poniżej 100% mnie szybciej?
Maszyna dedykowana jest mojej aplikacji java.
EDYTOWAĆ:
Dzięki za fantastyczny wkład!
Zadania mają różną złożoność i dotyczą operacji we / wy, więc posiadanie niskiej puli wątków powiedzmy, że 4 może równie dobrze uruchamiać procesor do 20%. Nie mam pojęcia, ile zadań faktycznie zajmie procesorowi 100%.
Myślałem, że powinienem monitorować procesor przez RMI i dynamicznie wybierać pracę w górę iw dół, czy też nie powinienem się tym przejmować i pozwolić systemowi operacyjnemu to obsługiwać.