Wie kann man die Arbeitsspeichernutzung bei der Verwendung von PowerShell auf einen bestimmten Wert fixieren (limitieren)?
Gibt es eine Möglichkeit die Verwendung des Arbeitsspeichers zu limitieren ?
Ich benötige nämlich teilweise 38 GB Arbeitsspeicher (inkl. virtuellem Speicher) und mein Prozessor ist dabei nur zu 37 Prozent ausgelastet.
Das Problem tritt bei folgendem Skript auf, welches zur Bearbeitung von CSV Dateien dient:
Die Technischen Daten meines Rechners sind:
Prozessor: Intel i7 2600k 4 Kerne, 8 Threads, 4 GHz
Arbeitsspeicher: 16 GB (4 Module, laufen im Dual Channel Modus)
OS: Windows 10 64 Bit Enterprise
PowerShell Version: 5.0.10240.16384
Wünschenswert wäre, wenn die Arbeitsspeicher Nutzung von Powershell auf 12 GB Limitiert wird, da mein Rechner im idle ca. 4 GB benutzt.
VG
Rippchen
Ich benötige nämlich teilweise 38 GB Arbeitsspeicher (inkl. virtuellem Speicher) und mein Prozessor ist dabei nur zu 37 Prozent ausgelastet.
Das Problem tritt bei folgendem Skript auf, welches zur Bearbeitung von CSV Dateien dient:
$folder = 'C:\Users\ICH\Desktop\Import'
$out = 'C:\Users\ICH\Desktop\Export\Gesamt.csv'
gci $folder -Filter *.csv -recurse | %{
$raw = ((gc $_.FullName) | select -Skip 1)
$csv = $raw[0..($raw.GetUpperBound(0)-0)]| ConvertFrom-CSV -Delimiter ";" -Header "1","2","Timestamp","4","Modification Timestamp","6","7"
$csv | group {get-date $_.Timestamp} | %{
$_.Group | sort {get-date $_.'Modifikation Timestamp'} -Descending | select -First 1
} | Sort "Timestamp", "Modification Timestamp" -descending | export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8
}
Die Technischen Daten meines Rechners sind:
Prozessor: Intel i7 2600k 4 Kerne, 8 Threads, 4 GHz
Arbeitsspeicher: 16 GB (4 Module, laufen im Dual Channel Modus)
OS: Windows 10 64 Bit Enterprise
PowerShell Version: 5.0.10240.16384
Wünschenswert wäre, wenn die Arbeitsspeicher Nutzung von Powershell auf 12 GB Limitiert wird, da mein Rechner im idle ca. 4 GB benutzt.
VG
Rippchen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305709
Url: https://administrator.de/forum/wie-kann-man-die-arbeitsspeichernutzung-bei-der-verwendung-von-powershell-auf-einen-bestimmten-wert-fixieren-305709.html
Ausgedruckt am: 29.04.2025 um 04:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
Gruß,
Peter
Zitat von @Rippchen:
Das Problem tritt bei folgendem Skript auf, welches zur Bearbeitung von CSV Dateien dient:
Welches Monster an CSV Datei hast du denn? 50TByte?Das Problem tritt bei folgendem Skript auf, welches zur Bearbeitung von CSV Dateien dient:
Ich benötige nämlich teilweise 38 GB Arbeitsspeicher
Wie hast du dies festgemacht bei deinen 16 GB RAM?Gruß,
Peter

$raw.GetUpperBound(0)-0
Was soll dieses Konstrukt denn bwirken?? Völlig überflüssig wenn der Upperbound sowieso gleich bleibt...Benutze weniger Variablen in der Schleife und lade nicht die gesamte CSV auf einmal in den Speicher sondern pipe:
$folder = 'C:\Users\ICH\Desktop\Import'
$out = 'C:\Users\ICH\Desktop\Export\Gesamt.csv'
gci $folder -Filter *.csv -recurse | %{
gc $_.FullName | select -Skip 1| ConvertFrom-CSV -Delimiter ";" -Header "1","2","Timestamp","4","Modification Timestamp","6","7" | group {get-date $_.Timestamp} | %{$_.Group | sort {get-date $_.'Modifikation Timestamp'} -Descending | select -First 1} | Sort "Timestamp", "Modification Timestamp" -descending | export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8
[System.GC]::Collect()
}

Nutze parallele Threadverarbeitung, z.B. mit Jobs (Start-Job)
Ein Single-Thread wird deinen Prozessor so nie auslasten, das versteht sich ja von selbst denn Powershell startet ja meist im STA (Single Thread Appartment) Mode.
Powershell-Workflows sind dafür z.B, perfekt geeignet mehrere Aufgaben parallel zu verabeiten:
https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/26/powershel ...
Ein Single-Thread wird deinen Prozessor so nie auslasten, das versteht sich ja von selbst denn Powershell startet ja meist im STA (Single Thread Appartment) Mode.
Powershell-Workflows sind dafür z.B, perfekt geeignet mehrere Aufgaben parallel zu verabeiten:
https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/26/powershel ...