Использование и сортировка памяти SAS - PullRequest
10 голосов
/ 14 апреля 2011

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

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

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

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

64-битная ОС под управлением 64-битной SAS, кстати.

Ответы [ 3 ]

6 голосов
/ 14 апреля 2011

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

3 голосов
/ 19 апреля 2011

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

1 голос
/ 15 апреля 2011

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

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

...