SAS für Schnelle – Performancefallen erfolgreich umgehen

WEBINAR@LUNCHTIME
THEMA: „SAS FÜR SCHNELLE –
PERFORMANCEFALLEN ERFOLGREICH UMGEHEN"
THOMAS WENDE
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME HERZLICH WILLKOMMEN BEI WEBINAR@LUNCHTIME
Moderation
Training
Anne K. Bogner-Hamleh
Tom Wende
SAS Institute GmbH
Education Consultant
SAS Institute GmbH
Senior Technical Trainer
Xing-Profil:
Xing-Profil:
http://www.xing.com/profile/AnneKatrin_BognerHamleh?key=0.0
https://www.xing.com/profile/Thomas_Wende2?key=0.0
Hinweise zum Ablauf des Webinars:
• Teilnehmer sind automatisch “stumm” geschaltet
• Sie können Nachrichten an den Moderator senden und Fragen stellen
• die Veranstaltung wird aufgezeichnet
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
EFFIZIENZBAUSTEINE
CPU Zeit
Zeit für die
Programmerstellung
I/O Operationen
Netzwerk
Bandbreite
RAM-Speicher
Speicherplatz
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
EFFIZIENZBAUSTEINE
•
CPU Zeit ist die Zeit, die es dauert, um eine
Anwendungsroutine auszuführen.
• Berechnungen
• Daten lessen und
schreiben
• Bedingte Verarbeitung
• Schleifen
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
CPU Zeit
EFFIZIENZBAUSTEINE
•
I/O misst die Lese- und Schreibprozesse. I/O ist das
Nadelör, wenn es um Geschwindigkeit beim
Programmablauf geht
• Transfer vom
Datenspeicherplatz in den
Arbeitsspeicher
• Ausgabe aus dem
Arbeitsspeicher in die
neue Datei
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
I/O Operationen
EFFIZIENZBAUSTEINE
•
Memory ist der verfügbare Arbeitsspeicher (RAM).
• Weil die Preise für RAM Speicher seit Beginn des
Computerzeitalters quasi stetig fallen, werden InMemory Lösungen immer beliebter.
• Ausführbare
Programm-Module
• Daten
• Bufferspeicher
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
RAM-Speicher
KENNEN SIE IHRE TECHNISCHE UMGEBUNG?
•
Sie machen sich Gedanken über Performance? Dann sollten Sie die
Umgebung, in der Sie arbeiten, kennen!
Systemauslastung
Hardware
Betriebssystem
SAS
Installation
Technische Voraussetungen
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
...
TRACKINGOPTIONEN FÜR DIE RESSOURCENVERWENDUNG
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
...
FULLSTIMER OPTION
•
FULLSTIMER liefert zusätzliche Statistiken,
• wie User CPU und System CPU Zeit.
z/OS
OPTIONS NOFULLSTATS | FULLSTATS;
Windows and UNIX
OPTIONS NOFULLSTIMER | FULLSTIMER;
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
...
SAS DATEIEN
VERARBEITEN
Memory
I/O
Messpunkt
Input
SAS
Datei
Buffer
CacheSpeicher
PDV
D JobTitle D Salary
Outpu
t SAS
Datei
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Manager
ID
Bonus
Buffer
I/O
Messpunkt
...
WOHER KOMMT DIE
WARTEZEIT?
•
Die Real time, die bei der Programmausführung gemessen wird, wird
am stärksten von den Input/Output (I/O) Prozessen beeinflusst!
I/O
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Real time
(Wartezeit)
PROGRAMMOPTIMIERUNG
Wenn man also die I/O Prozesse minimiert, spart man die
meiste Zeit!
Schritte
reduzieren
I/O
minimieren
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Datenmenge
reduzieren
3 EINFACHE WEGE UM I/O ZU MINIMIEREN
I/O
minimieren
Drop- oder Keep
bei SET-Dateien
verwenden
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Where statt
Subsetting-if,
wenn möglich
Komprimierung /
Dateigrößenreduktion
TECHNIK 1 UND 2: DEN PDV SCHONEN
I/O
minimieren
Drop- oder Keep
bei SET-Dateien
verwenden
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Where statt
Subsetting-if,
wenn möglich
DATENINPUT VERRINGERN
Spaltenanzahl verringern
DROP oder KEEP Anweisungen
DROP= or KEEP= Dateioptionen
Anzahl der Durchläufe verringern
WHERE Anweisung
WHERE= Dateioption
OBS= und FIRSTOBS= Dateioptionen
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
I/O
minimieren
REDUKTION DER I/O PROZESSE
I/O
minimieren
Datenmenge
verringern
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Komprimierung /
Dateigrößenreduktion
DATEIGRÖßE VERRINGERN: KOMPRIMIERUNG

Wenn man eine große Datei komprimiert, reduziert sich die
Anzahl der Data Set Pages, d.h. es müssen während der
Verarbeitung weniger I/O-Prozesse durchgeführt werden.
 Beim Entpacken im Arbeitsspeicher wird mehr CPU Power
benötig, aber CPU ist immer schneller als I/O
I/O
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
DATEN KOMPRIMIEREN
•
Es gibt in SAS zwei Komprimierungsalgorithmen
RLE (Run-Length Encoding)
RDC (Ross Data Compression)
COMPRESS= Option
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
DATEN KOMPRIMIEREN: WAHL DER METHODE
Viele Alphanumerische
Variablen – am Besten
mit vielen sich
wiederholenden
Zeichen, wie
Leerzeichen.
Viele numerische
Variablen
Alphanumerische Daten
mit wiederkehrenden
Mustern
Beobachtungen > 1000
bytes
CPU Time
RLE (Run-Length Encoding)
COMPRESS=CHAR
COMPRESS=YES
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
RDC (Ross Data Compression)
COMPRESS=BINARY
DATEN ODER BIBLIOTHEKEN IN-MEMORY VERWENDEN
PRINT
TABULATE
FREQ
MEANS
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
IN-MEMORY TECHNIKEN
•
Die SASFILE Anweisung und die
MEMLIB Libname Option können
sowohl I/O als auch CPU Zeit sparen.
Rechenzeit
verkürzen
SASFILE Anweisung
MEMLIB Option
Memory
I/O
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
CPU
Zeit
IN-MEMORY TECHNIKEN

In Memory Techniken funktionieren nur, wenn die Daten
komplett in den Hauptspeicher passen.

Wenn man mit mehreren Usern auf einem Server arbeitet,
hat man den Arbeitsspeicher des Servers meistens nicht
für sich allein

C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
SASFILE ANWEISUNG
sasfile orion.customerdim load;
proc freq data=orion.customerdim;
SASFILE SAS-data-set LOAD;
tables CustomerCountry CustomerType;
run;
proc print data=orion.customerdim noobs;
where CustomerType='Orion Club Gold members high activity';
var CustomerID CustomerName CustomerAgeGroup;
run;
proc means data=orion.customerdim mean median max min;
var CustomerAge;
class CustomerGroup;
run;
proc tabulate data=orion.customerdim format=8.;
class CustomerAgeGroup CustomerType;
table CustomerType All=Total,
CustomerAgeGroup*n='
' All=Total*n='
'/rts=45;
SASFILE SAS-data-set
CLOSE;
run;
sasfile orion.customerdim close;
p303d06
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
MEMLIB OPTION
Mit der MEMLIB Option in einer Libname Anweisung, kann
man den kompletten Inhalt einer Bibliothek in den
Arbeitsspeicher laden
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME
DEMO
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
... UND SONST?









C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Mit Views arbeiten
Formate anstatt Variablen für Gruppierung verwenden
Daten effizient sortieren
Mehrfaches Einlesen von Rohdaten verhindern
(Speicherung als SAS-Datei)
Indizes oder Hashtables (in-memory) für Joins oder Table
Lookups verwenden
Proc Datasets anstelle des Data Step verwenden, um
bestehende Dateien zu modifizieren oder zu kopieren
Programmentwicklung mit Stichproben
High-Performance Prozeduren (z.B. Proc HPDS2)
SAS Systemoptionen zur Performanceoptimierung
DATEN EFFIZIENT SORTIEREN

C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
NOSORTEQUALS verwenden, wenn die Reihenfolge der
Zeilen innerhalb einer Sortierung egal ist.
GROßE SAS DATEIEN MIT HILFE VON INDIZES DURCHSUCHEN

Vorteil: I/O und CPU Zeit wird gespart.
 Nachteil: Indexdateien sind wartungsaufwändig.
Wenn die Ursprungsdatei sich ändert,
muss auch die IndexDatei neu erstellt werden!
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
HASH TABELLEN
•
Hash Tabellen sind Lookup-Tabellen (ähnlich einer IndexTabelle). Sie werden im Arbeitsspeicher erstellt und
während der Table Lookups gehalten.

Vorteil: Hoch effektiv
 Nachteil: Größenbeschränkung
durch Memory
DATA
Step
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
PROC DATASETS ZUM DATEN KOPIEREN,
ANHÄNGEN UND MODIFIZIEREN

C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
Anstelle den Data Step zu verwenden, kann man
ganz viele Operationen an bestehenden Daten mit
Proc Datasets durchführen, z.B. Daten anhängen,
Variablennamen oder Labels ändern oder Dateien
kopieren. Proc Datasets ist hierbei immer schneller.
MULTITHREADING – NICHT NUR MIT SPDS
•
SAS Systemoptionen zur Ressourcensteuerung
• Es gibt im SAS System zahlreiche System Optionen, um
die Verwendung von Ressourcen zu steuern:







CPUCount -Anzahl der von SAS genutzten Prozessoren
MemSize - Max. Hauptspeicher
SortSize - Hauptspeicherfestlegung für Sortierschritte
SumSize - Hauptspeicherfestlegung für Aggregationen
BufSize - Größe eines Datenpaketes in einem I/O Step
BufNo - Anzahl der Datenpakete
Threads – Aufteilung von SAS-Steps in Threads
Aber Vorsicht: Meistens sind diese Optionen schon vom
Systemadministrator optimiert. Eine Veränderung könnte
eventuell auch die Performance verschlechtern!!!
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
QUELLEN UND LINKS
•
SAS Programmierung 3: Effiziente Techniken des Datenmanagements
•
Andreas Bachert: Performancetuning für SAS Programme 1 in SAS WIKI
•
Kirk Paul Lafler: Top Ten SAS Performance Tuning Techniques (SUGI Paper
2012)
•
Advanced Performance Tuning Techniques – in der SAS Hilfe auf
support.sas.com
•
Tom Wende: In-memory auch mal ganz klassisch mit In-Memory Bibliotheken
(Im SAS Mehr Wissen Blog)
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
FRAGEN?
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME VIELEN DANK FÜR IHRE TEILNAHME
Interesse an weiterem Austausch?
•
Diskutieren Sie mit uns in der XING-Gruppe
Business Analytics mit SAS
•
Sprechen Sie uns direkt an:
[email protected]
•
SAS® Visual Analytics, SAS® Visual Statistics,
SAS® Enterprise Guide:
Neue Live-Webinare zu aktuellen Themen
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
WEBINAR@LUNCHTIME WEITERE INFORMATIONEN UND KURSE ZU DIESEM THEMA…
•
SAS® Programmierung 3: Effiziente Techniken des Datenmanagements
09.12. - 11.12.15 Wien
18.01. - 20.01.16 Heidelberg
14.03. - 16.03.16 Heidelberg
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
NÄCHSTES WEBINAR@LUNCHTIME:
SPECIAL: 16. DEZEMBER 2015
STATE OF THE ART IN CREDIT RISK MODELING
BY PROF. BART BAESENS
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
FOLIEN ZUM DOWNLOAD UNTER
WWW.SAS.DE/LUNCHTIME
WIE HAT IHNEN UNSER WEBINAR GEFALLEN?
C op yr i g h t © 2 0 1 2 , S A S I n s t i t u t e I n c . A l l r i g h t s r es er v e d .
www.SAS.com