1 месяц на форуме Топ пользователь Все
Награды
1 месяц на форуме
1 месяц на форуме
Топ пользователь
Топ пользователь
Запуск приложений с определенными ядрами процессора.
  489
Дома забацал "батник" для запуска exe - шников с параметрами Affinity, перевел через калькулятор двоичный код в шест-й в 0xAA, запустились 4 ядра из 8, те что виртуальные а не физические, то бишь 01010101 а мне нужно выставить 10101010("1" - включенный проц, "0" - выключенный), как будет выглядить параметр affinity?
Ответов 9 Написать ответ
  • XOMA
    9 февраля  

    :( Печаль, никто не знает шоль? Придётся самому курить тему.

    0
    • Герасим
      21 марта  

      Делись результатом!

      Ты хотел наверное все нечетные ядра использовать?

      0
      • XOMA
        22 марта  

        Герасим, Ага, тему можно закрывать, батник копируется в основную директорию приложения и путём создания ярлыка на раб столе можно спокойно запускать его, можно даже настроить планировщик задач для запуска БАТника в нужный момент. Курил так же тему на FX8350, в игре GTA5 с affinity 0xF0 дает прирост FPS и стабильный график времени кадра.

        0
        • AlexanderS
          AlexanderS
          Александр Свирин
          22 марта  

          XOMA, у FX давно исправили проблему распределения потоков по ядрам - обнови систему

          0
    • AlexanderS
      AlexanderS
      Александр Свирин
      22 марта  

      XOMA, какой сакральный смысл этого телодвижения?

      И как ты определил, что ядра работают виртуальные? smirking face

      В принципе, нет в процессорах никакого виртуального ядра. По сути, это просто свободные ресурсы процессора, которые выделяются второму потоку, если первый именно эти ресурсы в текущей операции не использует. Например, первый поток делает целочисленную операции, и если у второго потока в очереди стоит предсказание ветвления - то процессор может обе операции выполнить параллельно. Поскольку основные ресурсы часто заняты то эффективность такого выполнения в основном порядка 20-30%. Очень редко до 50.
      Но это не значит, что если на два виртуальных ядра (которые одно реальное) повесить два потока и привязать их каждый к своему ядру - один будет работать со скоростью 100%, другой со скоростью 20. Они оба будут работать со скоростью 60 - т.к. операции будут выполняться преимущественно последовательно и вперемешку
      Так что не можешь ты (или планировщик Windows) повесить поток на "виртуальное" ядро - его попросту нет. Если ресурсы конкретного ядра свободны то они будет использоваться на 100%.

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

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

      0
      • XOMA
        22 марта  

        AlexanderS, Батник нужен был для ноута с i7, у которого 4 ядра физических и 4 виртуальных(Hyper threading), мне не нужен экскурс в историю внедрения технологий HT или SMT, я задал запрос и хотел бы получить ответ. Пока ждал ответа сам въехал как мне выделить нужные ресурсы от каждого физ ядра(а их 4) выделив с каждого физ ядра по 1 потоку на нужное мне приложение, Affinity соответсвия 10101010.

        0
        • AlexanderS
          AlexanderS
          Александр Свирин
          22 марта  

          XOMA, то есть ты хочешь сказать что на i7 если ты ограничиваешь процесс привязкой к 4 ядрам - он работает быстрее, чем когда ему доступны все 8? face screaming in fear

          P.S. про 10101010 ты в первом сообщении написал, собственно

          0
          • Герасим
            29 апреля  

            Дело в том что есть программульки которые не терпят множественность ядер, либо виртуальные ядра!

            А еще порою необходимо запустить программы в каких то ядрах что бы другие ядра не грузил!
            К примеру Касперыча запустить только на физических, а СКЗИ на виртуальных, и будет как "ВОЛКИ СЫТЫ и ОВЦЫ ЦЕЛЫ"!

            0
            • AlexanderS
              AlexanderS
              Александр Свирин
              30 апреля  

              Герасим, объясняю еще раз - ты не сможешь одну программу запустить на "физическом" ядре другую на "виртуальном". Ибо их нет в принципе. Если процесс запускаешь на ядре - он будет использовать все доступные ресурсы. Если добавить на это же ядро второй процесс - активируются "запасные ресурсы", но в целом они все равно будут делиться поровну. Исключение - раздача приоритетов потокам либо возможно перекос баланса инструкций в приложениях, так, что они равномерно не распределяются, но это как-то маловероятно и с позиции ОС на все равно это никак не повлияешь.

              0
Ответ на тему: Запуск приложений с определенными ядрами процессора.
Введите код с картинки*:  Кликните на картинку, чтобы обновить код
grinning face grinning face with smiling eyes face with tears of joy smiling face with open mouth smiling face with open mouth and smiling eyes smiling face with open mouth and cold sweat smiling face with open mouth and tightly-closed eyes smiling face with halo smiling face with horns winking face smiling face with smiling eyes face savouring delicious food relieved face smiling face with heart-shaped eyes smiling face with sunglasses smirking face neutral face expressionless face unamused face face with cold sweat pensive face confused face confounded face kissing face face throwing a kiss kissing face with smiling eyes kissing face with closed eyes face with stuck-out tongue face with stuck-out tongue and winking eye face with stuck-out tongue and tightly-closed eyes disappointed face angry face pouting face crying face persevering face face with look of triumph disappointed but relieved face frowning face with open mouth anguished face fearful face weary face sleepy face tired face grimacing face loudly crying face face with open mouth face with open mouth and cold sweat face screaming in fear astonished face flushed face sleeping face dizzy face face without mouth face with medical mask face with no good gesture face with ok gesture person bowing deeply person with folded hands raised fist raised hand victory hand white up pointing index fisted hand sign waving hand sign ok hand sign thumbs up sign thumbs down sign clapping hands sign open hands sign flexed biceps
  
Предложения и замечания