2011-04-14 17 views
10

Tengo curiosidad por el uso que SAS hace de la memoria, la clasificación y por qué parece ser tan ineficiente.Uso y clasificación de la memoria SAS

Tengo un quad core xeon con 8GB ram. Tengo un conjunto de datos de 3GB. ¿Por qué, en un momento dado durante un tipo de proc estándar, se usa solo 120 MB de RAM y una escasa utilización de la CPU del 15-20%? Parece que algo terriblemente ineficiente está sucediendo con el procedimiento.

En mi opinión, como tengo la memoria disponible, cargará todo el conjunto de datos y luego procederá a borrar todos los ciclos de CPU disponibles. Pero solo el 15%? Es una gran pérdida de recursos disponibles y me molesta. Parece que va y viene constantemente a el disco que es dolorosamente lento.

¿Hay alguna configuración mágica que diga "SAS, puede utilizar todo para ir más rápido" Me falta?

64 bit OS con 64 bit SAS, por cierto.

Respuesta

6

Puede verificar sus configuraciones MEMSIZE y SORTSIZE. Más discusión sobre el rendimiento de clasificación es here.

1

En general, SAS no es así. SAS mantiene sus datos en sus unidades de disco y solo lee una pequeña porción a la vez. Para mí, esa es la ventaja de SAS: uso SAS para cosas que no caben en la memoria RAM.

Puede que le interese Stata, R u otro paquete que guarde sus datos en la memoria RAM. Es bastante fácil volver atrás & entre los programas, incluso para el mismo proyecto.

3

Lo que sucede con el género es que no es la clasificación la que toma el tiempo, generalmente es la lectura de los datos y la escritura de nuevo. La clasificación es, comparativamente, rápida. Entonces, con un conjunto de datos de 3GB, se toma un tiempo significativo a la espera de que el disco suministre todos los datos. Puede solaparse clasificando partes de los datos con la lectura de más, pero aún así es probable que esté vinculado a E/S. Dicho esto, MEMSIZE y SORTSIZE al menos le permitirán aprovechar al máximo su memoria disponible. Debe asegurarse de que SAS leerá todo el conjunto de datos y lo ordenará de una sola vez y luego lo volverá a escribir. Con memoria más baja, o si MEMSIZE/SORTSIZE no están configurados adecuadamente, clasificará el conjunto de datos en fragmentos y luego tendrá que fusionar esos fragmentos. Realmente desea evitar el "orden de pasos múltiples", si es posible, ya que duplicará el tiempo que lleva (tiene que pasar por todo el conjunto de datos clasificando trozos, luego a través de todos los datos, fusionando esos trozos). Creo que recibe sugerencias del SASLOG sobre si se trata de clasificación de pasos múltiples o no.