Ответ 1
Обновление:. Это изменилось в течение 4,15 таймфрейма из-за атаки Meltdown и Spectre в конце 2017 года и в начале 2018. Подробнее см. другой ответ.
Примечание. Я не разработчик Linux.
Для Intel "Идентификаторы контекста процесса" существует лимит в 4096 идентификаторов. Это означает, что, когда есть более 4096 процессов, вам необходимо управлять ими (например, возможно, сделать "наименее недавно использованную" вещь, чтобы, если процесс, который в настоящее время не имеет идентификатора, должен быть выполнен, тогда идентификатор берется из некоторого другой процесс и повторное использование).
Другая вещь, которая приходит в нее, - "сбивание TLB" на многопроцессорных системах. Они могут быть немного дороже, поэтому люди делают трюки, чтобы избежать их. Например, если процесс имеет только один поток, он может работать только на одном CPU, и вы не знаете, что нет необходимости посылать IPI другим ЦП (прерывая их и прося их выполнить "сбой TLB" ). После того, как вы начнете использовать PCID, вы не можете быть уверены, что другие процессоры все еще не имеют записей TLB и не могут делать эти трюки, чтобы избежать "сбивания TLB". Это также означает, что (теоретически, для плохо реализованной поддержки PCID) производительность, которую вы получаете от PCID, может быть меньше производительности, которую вы теряете из-за неизбежных сбоев в работе TLB и управления идентификационными данными, что приводит к чистым потерям.
В основном, я говорю, что немного сложно добавить поддержку PCID (это не так, как вы можете просто установить флаг в CR4 и забыть об этом). Вам нужно будет провести некоторое исследование (эксперименты, прототипы, бенчмаркинг), чтобы определить наиболее эффективный способ его реализации. Для большого/сложного/старого ядра (например, Linux) это будет еще сложнее, так как вам нужно быть осторожным, чтобы не расстраивать что-то еще случайно. Другое дело, что эта функция относительно новая (она существует только несколько лет, если я правильно помню) и не поддерживается множеством процессоров (например, что-то немного старше и что-то из AMD).
В принципе, я предполагаю, что это сводится к "времени и преимуществам" (или, что мало времени для небольшого улучшения производительности на ограниченном числе процессоров).