Я написав дуже інтенсивне CPU-завдання, яке працює, як очікувалося, на моєму чотирьохядерному MacBook Pro 2012 року. Я вимикаю його з 20 ниток, а температура піднімається приблизно до 100 ° C, як це вимірюється за допомогою Intel Power Gadget з мінімальним дроселюванням.
Візьміть ту саму програму та файли даних додому до мого MacBook Pro 2016 року 13 "з двоядерною машиною та запускайте її, я би сподівався, що вона також буде тримати 3,3-3,4 ГГц, поки температура не наблизиться до позначки 100 ° C. Команда Top показує завдання на 350% (по 2 ядра в кожній подвійній різьбі), але частота процесора стає скороченою до 1,6-1-8 ГГц з температурою лише 60 ° С або близько того, коли вентилятори вмирають тихо. Якщо я запускаю 4 окремо Завдання з одним різьбовим процесором, машина поводиться так, як очікувалося, підтримуючи 3,3-3,4 ГГц, поки не вдасться до 100 ° C і вентилятори не спрацьовують. Питання полягає в тому, чому мій процесор заглушений?
Обидві машини оновлюються та мають однакові версії gcc. Якщо я навіть дістаю двійковий файл з робочої машини і ставлю його на Mac 2016 року, у нього така ж проблема.
Якщо я запускаю 3 або 4 одиночних процесора CPU, щоб машина працювала на повній швидкості, тоді запускайте програму з потоком, вона також сповільнює частоту.
Обидві машини мають 16 ГБ оперативної пам’яті.
Редагувати
Погравши з кодом, я підозрюю, що він стихає, коли завдання створює занадто багато ниток. У цій програмі я беру кожен прочитаний запис і створюю для нього потік. Я дозволяю запускати лише 20 або більше потоків за один раз, так що ніколи немає більше 21 потоку, але є 14 400 000 записів, які підлягають обробці протягом 30 хвилин або приблизно кожен з цих записів буде оброблятися окремим потоком.
Я створив тривіальну програму pthread, яка висмоктувала час процесора і встановлювала 10 з них запуск. Проблемний ноутбук запустив це і нагрівся до 95С без проблем.
Я думаю, що я перепишу свій код, щоб повторно використовувати ту саму нитку, а не знищувати їх і запускати їх знову.
Оновлення 13.05.17
Після декількох годин роботи він лише створює n ниток і просто повторно використовує їх, що не допомогло. За винятком температури процесора, що призведе до того, що ця машина згортається?