Использование и сортировка памяти SAS

Мне интересно, как использовать память SAS, сортировать и почему это кажется настолько неэффективным.

У меня четырехъядерный xeon с 8 ГБ оперативной памяти. У меня есть набор данных 3 ГБ. Почему в любой момент времени во время стандартного сортировки proc используется всего 120 МБ используемого бара и небольшое использование CPU на 15-20%? Кажется, что с этой процедурой происходит что-то ужасно неэффективное.

На мой взгляд, поскольку у меня есть доступная память, она загрузит весь набор данных, а затем начнет стирать все доступные циклы CPU. Но только 15%? Это потрясающая трата доступных ресурсов и беспокоит меня. Кажется, что он постоянно идет туда и обратно диск, который мучительно медленный.

Есть ли какая-то магическая настройка, в которой говорится: "SAS, вы можете использовать все, чтобы идти быстрее". Мне не хватает?

64-битная ОС с 64-битным SAS, кстати.

Ответ 1

Вы можете проверить MEMSIZE и SORTSIZE. Более подробное описание производительности сортировки здесь.

Ответ 2

Вещь с сортировкой состоит в том, что это не сортировка, которая занимает время, обычно это чтение данных и запись их снова. Сортировка сравнительно быстро. Таким образом, при наборе данных в 3 ГБ происходит значительное время, ожидая, пока диск будет поставлять все данные. Он может перекрывать сортировку частей данных с чтением большего количества из них, но он все еще может быть связан с I/O. Тем не менее, MEMSIZE и SORTSIZE, по крайней мере, позволят вам максимально использовать доступную память. Вы должны убедиться, что SAS будет считывать весь набор данных и сортировать его за один раз, а затем снова записывать. С более низкой памятью или если MEMSIZE/SORTSIZE не настроены соответствующим образом, он сортирует набор данных в кусках, а затем должен объединить эти куски. Вы действительно хотите избежать "многопроходной сортировки", если это вообще возможно, так как оно удвоит время, затрачиваемое на выполнение (необходимо пройти все сортировочные блоки данных, а затем все данные снова слить эти куски). Я думаю, вы получаете подсказки от SASLOG относительно того, является ли это многопроходной сортировкой или нет.

Ответ 3

В общем, это не то, как работает SAS. SAS хранит ваши данные на ваших дисках и только читает небольшую часть за раз. К тому, что это преимущество SAS: я использую SAS для вещей, которые не могут быть помещены в ОЗУ.

Вам может быть интересен Stata, R или другой пакет, который хранит ваши данные в ОЗУ. Очень легко перемещаться между программами, даже для одного и того же проекта.