Увеличение количества выделенных ядер не привело к улучшению ситуации.
Потому что процесс упирается в io и блокировки в MongoDB при записи не причем.
Суммарный объем дынных около 1 гигабайта.
Оперативки выделено 8 гигов.
Запихайте всю коллекцию в RAM.
Примерно раз в час возникает задача быстро обновить около 20 миллионов записей.
Но я бы лучше в первую очередь пересмотрел алгоритм, почему drop/insert а не update?
Возможно вообще обновлять не нужно, а делать реалтайм "декорацию" данных при получении?
Расскажите подробнее про задачу.