Почему одно ядро процессора работало бы медленнее, чем другие?

Опция base R будет состоять в том, чтобы сначала создать объект с логическим условием (чтобы оно не изменилось позже), а затем использовать Map для замены столбцов соответствующими значениями

i1 <- with(df, task == "fre" & prevt == "rep")
df[-1] <- Map(function(x, i) replace(x, i1, i),  df[-1], c("ins", "swi"))
< hr>

Или следуя той же логике в коде OP, сначала создайте логическое условие, а затем используйте это

library(dplyr)
df %>% 
     mutate(i1 = task == "fre" & prevt == "rep", # create logical column 
            task = replace(task, i1, "ins"), 
            prevt = replace(prevt, i1, "swi")) %>% 
     select(-i1) # remove the logical column
8
задан Edi H 5 June 2009 в 20:42
поделиться

3 ответа

У вас могут быть приложения, которые выбрали подключение к одному и тому же процессору (соответствие ЦП).

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

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

Это не обязательно должна быть ваша ОС, это может делать какой-то другой фоновый демон.

7
ответ дан 5 December 2019 в 17:40
поделиться

Большинство современных процессоров имеют отдельное регулирование каждого ядра процессора из-за перегрева или функций энергосбережения. Вы можете попробовать отключить энергосбережение или улучшить охлаждение. Или, может быть, у вас плохой процессор. На моем i7 я получаю примерно 2-3 градуса разных температур 8 ядер в "датчиках". При полной нагрузке все еще есть отклонения.

2
ответ дан 5 December 2019 в 17:40
поделиться

Другая возможность состоит в том, что процесс переносится с одного ядра на другое во время работы. Я бы предложил установить привязку ЦП к «медленному» ядру и посмотреть, будет ли оно таким же быстрым.

Много лет назад, еще до эпохи многоядерности, я купил себе двухпроцессорный Athlon MP для «веб-разработки». , Внезапно мои веб-серверы Plone / Zope / Python замедлились до сканирования. Поиск в Google показал, что интерпретатор CPython имеет глобальную блокировку интерпретатора, но потоки Python поддерживаются потоками ОС. Потоки ОС были равномерно распределены между ЦП, но только один ЦП может получить блокировку за раз, поэтому все остальные процессы должны были ждать .

Установка привязки ЦП Zope к любому ЦП решила проблему.

1
ответ дан 5 December 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: