Utworzony przeze mnie program python jest związany z IO. Większość czasu (ponad 90%) spędza się w pojedynczej pętli, która powtarza się ~ 10 000 razy. W tej pętli generowane są ~ 100KB dane i zapisywane do pliku tymczasowego; jest następnie odczytywany z powrotem przez inny program i statystyki dotyczące zebranych danych. Jest to jedyny sposób przekazania danych do drugiego programu.RAMdisk wolniejszy od dysku?
Z uwagi na to, że jest to główne wąskie gardło, pomyślałem, że przeniesienie lokalizacji pliku tymczasowego z mojego głównego dysku twardego na (~ 40 MB) RAMdysku (wewnątrz ponad 2 GB wolnej pamięci RAM) znacznie zwiększyłoby prędkość IO w tym zakresie plik, a więc zmniejszyć czas działania. Jednakże, to otrzymuje się następujące wyniki (w każdym z uśrednieniem 20 przebiegów):
- danych Test 1: Bez RAMDisk - 72.7s, Z RAMDisk - 78.6s
- danych Test 2: bez RAMDisk - 223.0s, z RAMdisk - 235.1s
Wygląda na to, że RAMdisk jest wolniejszy niż mój HDD.
Co może być przyczyną?
Czy istnieje jakaś alternatywa dla użycia RAMdysku, aby uzyskać szybszy plik IO?
Chodzi o to, że używa teraz czystej pamięci RAM - w ogóle nie jest to dysk. Zgodnie z wszelkimi oczekiwaniami powinien uzyskać lepszą wydajność, niż dałoby to najszybsze dyski SSD na rynku - ale jest wolniejszy niż napęd mechaniczny. Pyta, dlaczego tak może być. – Arafangion
Tak, doceniam to. Sugerowałem, że może to nie dysk, a sposób w jaki dyski są używane, jest problemem. –
Arafangion: Pomysł, że "RAM = electronic, disk = mechanical" nie jest już tak naprawdę prawdziwy. Twój system operacyjny może kopiować strony pamięci na dysk, gdy zajdzie taka potrzeba (RAM -> mechaniczne) lub pliki pamięci podręcznej w pamięci, jeśli chce (dysk -> elektroniczny). Brudne strony (kod, dane lub pliki) są przepłukiwane do mechanicznego talerza tylko wtedy, gdy potrzebuje pamięci RAM. – Ken