Thread View: pl.comp.lang.delphi
9 messages
9 total messages
Started by MKi
Thu, 22 Dec 2016 11:49
Jak odczytać dane fizycznie z dysku, nie z cache
Author: MKi
Date: Thu, 22 Dec 2016 11:49
Date: Thu, 22 Dec 2016 11:49
23 lines
2017 bytes
2017 bytes
Witajcie, problem jest taki: Program zapisuje jakiś plik na dysku (dysk jest podłączany przez USB). Po zapisie program powinien sprawdzić poprawność zapisu - zapewne najprościej przeczytać to, co przed chwilą zapisał. Ale bezpośrednio po zapisie dane siedzą w cache dysku czy systemu i odczyt nie następuje z nośnika - można to ocenić po szybkości odczytu, wystarczy po zapisie odłączyć dysk, podłączyć go z powrotem i odczyt jest wyraźnie wolniejszy. No i pojawia się pytanie - jak wyczyścić ten cache, żeby wymusić odczyt z nośnika? Próbowałem programowo odłączyć dysk (jak przez ikonkę "Bezpiecznie usuwanie sprzętu"), ale żeby system go zobaczył z powrotem trzeba go fizycznie odłączyć i podłączyć. Można też próbować zapchać cache innymi danymi, ale jak sprawdzić jego rozmiar? I ile tych cache'y właściwie jest? Delphi 2009 + Windows 7 Pro. Pozdrowienia przedświąteczne, MKi
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: Piotr Rezmer
Date: Thu, 22 Dec 2016 12:12
Date: Thu, 22 Dec 2016 12:12
13 lines
1410 bytes
1410 bytes
W dniu 2016-12-22 o 12:49, MKi pisze: > No i pojawia się pytanie - jak wyczyścić ten cache, żeby wymusić > odczyt z nośnika? Próbowałem programowo odłączyć dysk (jak przez > ikonkę "Bezpiecznie usuwanie sprzętu"), ale żeby system go > zobaczył z powrotem trzeba go fizycznie odłączyć i podłączyć. A co to za program i dlaczego kombinujesz pod górkę? Piszesz jakiś benchmark? -- pozdrawiam Piotr XLR250&bmw_f650_dakar
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: Piotr Rezmer
Date: Thu, 22 Dec 2016 12:16
Date: Thu, 22 Dec 2016 12:16
18 lines
1475 bytes
1475 bytes
W dniu 2016-12-22 o 12:49, MKi pisze: > Witajcie, > problem jest taki: > Program zapisuje jakiś plik na dysku (dysk jest podłączany przez USB). > Po zapisie program powinien sprawdzić poprawność zapisu > - zapewne najprościej przeczytać to, co przed chwilą zapisał. Może chodzi Ci o komendę: VERIFY Z linii poleceń możesz włączać i wyłączać weryfikację zapisu na dysk. U mnie w Windows 10 Pro, na dysku SSD jest domyślnie wyłączona. -- pozdrawiam Piotr XLR250&bmw_f650_dakar
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: MKi
Date: Thu, 22 Dec 2016 12:43
Date: Thu, 22 Dec 2016 12:43
18 lines
1916 bytes
1916 bytes
-- Wiadomość oryginalna (wysłana 22.12.2016 13:12) -- > W dniu 2016-12-22 o 12:49, MKi pisze: >> No i pojawia się pytanie - jak wyczyścić ten cache, żeby wymusić >> odczyt z nośnika? Próbowałem programowo odłączyć dysk (jak przez >> ikonkę "Bezpiecznie usuwanie sprzętu"), ale żeby system go >> zobaczył z powrotem trzeba go fizycznie odłączyć i podłączyć. > > A co to za program i dlaczego kombinujesz pod górkę? Piszesz jakiś > benchmark? > Program - coś w rodzaju codziennego automatycznego backupu. Chodzi o weryfikację, czy backup zrobił się prawidłowo. (To w końcu koszmar backupującego, jak się dowie w potrzebie, że backup jest, ale nieczytelny). Pozdrowienia przedświąteczne, MKi
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: MKi
Date: Thu, 22 Dec 2016 13:08
Date: Thu, 22 Dec 2016 13:08
27 lines
2077 bytes
2077 bytes
-- Wiadomość oryginalna (wysłana 22.12.2016 13:16) -- > W dniu 2016-12-22 o 12:49, MKi pisze: >> Witajcie, >> problem jest taki: >> Program zapisuje jakiś plik na dysku (dysk jest podłączany przez USB). >> Po zapisie program powinien sprawdzić poprawność zapisu >> - zapewne najprościej przeczytać to, co przed chwilą zapisał. > > Może chodzi Ci o komendę: > > VERIFY > > Z linii poleceń możesz włączać i wyłączać weryfikację zapisu na dysk. U > mnie w Windows 10 Pro, na dysku SSD jest domyślnie wyłączona. > Hm, u mnie ten tekst: C:\>verify /? Włącza przeprowadzanie przez program cmd.exe weryfikacji poprawności zapisywania plików na dysku. rozumiem tak, że dotyczy tylko zapisów wykonywanych z poziomu cmd. Źle rozumiem? Pozdrowienia przedświąteczne, MKi
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: mmm
Date: Thu, 22 Dec 2016 14:31
Date: Thu, 22 Dec 2016 14:31
22 lines
1679 bytes
1679 bytes
W dniu 2016-12-22 o 12:49, MKi pisze: > Witajcie, > problem jest taki: > Program zapisuje jakiś plik na dysku (dysk jest podłączany przez USB). > Po zapisie program powinien sprawdzić poprawność zapisu > - zapewne najprościej przeczytać to, co przed chwilą zapisał. Ja stojac przed podobnym problemem zrobiłem tak: pytam "czy bezpiecznie odlaczyc USB" jak użytkownik wybierze tak to odłączam USB a do czasu zapisania zmian na dysku "proszę czekać". Problem sie rozwiazał a jak ktoś nie che czekac to jego problem, ja w logach mam zapisane kiedy wyciagnał USB :D I link http://fspsa.free.fr/deconnexion_rapide_clef_usb.htm Z tego co widzę możesz użyć sync.exe z pakietu Sysinternals M
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: Piotr Rezmer
Date: Thu, 22 Dec 2016 14:55
Date: Thu, 22 Dec 2016 14:55
25 lines
1833 bytes
1833 bytes
W dniu 2016-12-22 o 14:08, MKi pisze: > rozumiem tak, że dotyczy tylko zapisów wykonywanych z poziomu cmd. > Źle rozumiem? Z tym jest różnie. Ponoć Windows Explorer zawsze używa włączonej weryfikacji. Czyli ten switch nie działa globalnie. W takiej sytuacji można spróbować szukać czegoś w kierunku "how to flush disk cache", np: wykorzystać utility sync: http://superuser.com/questions/833552/manually-flushing-write-cache-on-windows Wyczyścić cache: http://stackoverflow.com/questions/22666042/disable-or-flush-page-cache-on-windows/23085045#23085045 FlushFileBuffers: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364439(v=vs.85).aspx Flashmem.exe https://chadaustin.me/2009/04/flushing-disk-cache/ -- pozdrawiam Piotr XLR250&bmw_f650_dakar
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: arivald
Date: Thu, 22 Dec 2016 17:24
Date: Thu, 22 Dec 2016 17:24
36 lines
2211 bytes
2211 bytes
W dniu 2016-12-22 o 13:43, MKi pisze: > -- Wiadomość oryginalna (wysłana 22.12.2016 13:12) -- >> W dniu 2016-12-22 o 12:49, MKi pisze: >>> No i pojawia się pytanie - jak wyczyścić ten cache, żeby wymusić >>> odczyt z nośnika? Próbowałem programowo odłączyć dysk (jak przez >>> ikonkę "Bezpiecznie usuwanie sprzętu"), ale żeby system go >>> zobaczył z powrotem trzeba go fizycznie odłączyć i podłączyć. >> >> A co to za program i dlaczego kombinujesz pod górkę? Piszesz jakiś >> benchmark? >> > > Program - coś w rodzaju codziennego automatycznego backupu. > Chodzi o weryfikację, czy backup zrobił się prawidłowo. > (To w końcu koszmar backupującego, jak się dowie w potrzebie, > że backup jest, ale nieczytelny). > > Pozdrowienia przedświąteczne, > MKi WinAPI CreateFile() + FILE_FLAG_BACKUP_SEMANTICS + FILE_FLAG_NO_BUFFERING, do odczytu dodatkowo FILE_FLAG_SEQUENTIAL_SCAN, do zapisu FILE_FLAG_WRITE_THROUGH. Nie pominiesz tak sprzętowych cache. I pocztytaj o ograniczeniach na zapis i odczyt przy FILE_FLAG_NO_BUFFERING, https://msdn.microsoft.com/en-us/library/windows/desktop/cc644950(v=vs.85).aspx. Albo możesz otworzyć urządzanie bezpośrednio, ale wtedy musisz rozumieć filesystem, a to naprawdę ogromny temat. -- Arivald
Re: Jak odczytać dane fizycznie z dysku, nie z cache
Author: marfi
Date: Thu, 22 Dec 2016 19:34
Date: Thu, 22 Dec 2016 19:34
15 lines
1681 bytes
1681 bytes
Użytkownik "MKi" <emkai@to-nalezy-wywalic.op.pl> napisał w wiadomości news:585bbdb6$0$5148$65785112@news.neostrada.pl... > Witajcie, > problem jest taki: > Program zapisuje jakiś plik na dysku (dysk jest podłączany przez USB). > Po zapisie program powinien sprawdzić poprawność zapisu > - zapewne najprościej przeczytać to, co przed chwilą zapisał. > ... To znasz: https://msdn.microsoft.com/en-us/library/windows/desktop/cc644950(v=vs.85).aspx -- marfi
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads