| 
 | 
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем привет! Две машины с одинаковым 2-х ядерным процессором. На одной стоит Win10, на другой - Linux (CentOS7) Runtime.getRuntime().availableProcessors(): - на Win10 выводит 4 - на Linux (CentOS7) 2 Винда, как я понимаю выводит количество потоков (обычно это ядра*2), а линукс фактическое количество ядер. Или я ошибаюсь? Есть универсальный способ определения кол-ва процессоров? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 12:33 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar, а вы прямо в код првалитесь, там, насколько я помню, будет комментарий о том, как различаются понятие "процессоров" у винды и линукса. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 12:42 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Т.е. как настроили JVM на конкретной машине, то и показывает? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ОзверинMolasar, а вы прямо в код првалитесь, там, насколько я помню, будет комментарий о том, как различаются понятие "процессоров" у винды и линукса. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 12:51 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar, ну там суть такая, что ява использует средства ос для определения кол-ва процессоров. и В винде оно возвращает с учетом гипертрединга, а в линуксе - похожу, только физические ядра https://linux.die.net/man/3/sysconf - _SC_NPROCESSORS_ONLN ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 12:54 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar, универсального способа нет. Каждая операционка вкладывает свой смысл в термины процессор, ядро и thread. Вы для себя сами решаете что правильно. Исходя из вашей задачи. Задачу я надеюсь вы понимаете. Более того. Intel и AMD на коробке изделия могут слегка нас обманывать и выдавать одни цифры за другие. По вашему вопросу. Самое простое - посмотреть в переменные окружения. Например у меня под десятой виндой. Код: java 1. 2. 3. 4. 5. Вообще такой параметру лучше задавать вручную (! если это важно) т.к. современные среды виртуализации могут быть очень хитрыми. Тактовая частота может плавать. И собственно сведения которые вы соберете из getRuntime() или из еще каких-то источников не сильно могут отражать действительность. Если вы решили выбрать размер пула потоков исходя из availableProcessors - то это скорее всего будет неправильный выбор. Для большинства задач количество тредов слабо связано с процессорами. Особенно если ваши треды большую часть времени будут стоять в ожидании блокера. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 14:22 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mayton Если вы решили выбрать размер пула потоков исходя из availableProcessors - то это скорее всего будет неправильный выбор. Для большинства задач количество тредов слабо связано с процессорами. Особенно если ваши треды большую часть времени будут стоять в ожидании блокера. Не совсем правильно. availableProcessors - это некая база, от которой надо отталкиваться для расчетов, введя поправочные коэффициенты на свою задачу CPU bound/ IO bound. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 14:25 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Озверин https://linux.die.net/man/3/sysconf  - _SC_NPROCESSORS_ONLNИнфа неактуальная:  https://bugs.openjdk.java.net/browse/JDK-8140793  или  https://bugs.openjdk.java.net/browse/JDK-6515172 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 14:46 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Да. Докеры и виртуалки. Тоже требуют внимания. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 14:53 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Андрей ПанфиловОзверин https://linux.die.net/man/3/sysconf  - _SC_NPROCESSORS_ONLNИнфа неактуальная:  https://bugs.openjdk.java.net/browse/JDK-8140793  или  https://bugs.openjdk.java.net/browse/JDK-6515172  если до сих пор выдает - значит актуальна? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.07.2019, 15:16 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Озверин...и В винде оно возвращает с учетом гипертрединга, а в линуксе - похожу, только физические ядра... Х.з. На Ubundu у меня все возврашалось корректно И в такие "выкрутасы" не сильно верится. Что выводит команда top? Сколько ядер/процессоров Возможно у автора гипер трейдинг банально выключен и процессоров (ядер) только 2-е штуки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.07.2019, 14:27 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Количество ядер мне необходимо для расчета количества соединений с БД через пул хикари. Каждое соединение в отдельном потоке. У Оракла читал, что оптимальный вариант 2 * Ядра + 1. На практике это подтверждается. В настройках по умолчанию хочу выставлять количество потоков, рассчитанное по этой формуле. Можно и в ручную задать этот параметр. maytonMolasar, универсального способа нет. Каждая операционка вкладывает свой смысл в термины процессор, ядро и thread. Вы для себя сами решаете что правильно. Исходя из вашей задачи. Задачу я надеюсь вы понимаете. Более того. Intel и AMD на коробке изделия могут слегка нас обманывать и выдавать одни цифры за другие. По вашему вопросу. Самое простое - посмотреть в переменные окружения. Например у меня под десятой виндой. Код: java 1. 2. 3. 4. 5. Вообще такой параметру лучше задавать вручную (! если это важно) т.к. современные среды виртуализации могут быть очень хитрыми. Тактовая частота может плавать. И собственно сведения которые вы соберете из getRuntime() или из еще каких-то источников не сильно могут отражать действительность. Если вы решили выбрать размер пула потоков исходя из availableProcessors - то это скорее всего будет неправильный выбор. Для большинства задач количество тредов слабо связано с процессорами. Особенно если ваши треды большую часть времени будут стоять в ожидании блокера. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.07.2019, 18:19 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Premature optimization is the root of all evil. У тебя почти гарантированно в коде найдется масса мест, где что-то делается на столько не оптимально, что кол-во коннектов в пуле будет по сравнению с этим мелочью. Какой смысл сейчас на этапе разработки проекта тратить время на возню с высчитыванием оптимального размера пула, оптимального кол-ва работников и т.д.? Если будет доказано, что именно эти места являются узким местом - тогда и прикинешь оптимальную конфигурацию. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.07.2019, 18:30 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Пусть автор сначала приведет скриншоты системных утилит Unix (хотя бы top), где было бы видно РЕАЛЬНОЕ кол-во процессоров в системе, а не его хотелки, что должно быть как-бы 4. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.07.2019, 18:50 | 
  
  
  
   | 
||
| 
 
Runtime.getRuntime().availableProcessors() 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  lscpu И не скриншоты - текст из консоли замечательно копируется в два клика мыши. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 02.07.2019, 19:04 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=39832981&tid=2121221]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    14ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    56ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    52ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 233ms | 
| total: | 387ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.