Hallo, einfache Frage: gibt es einen Harddisk-Monitor für Win 98? (Betonung liegt auf "Win 98"? Problem: auf dem Zielsystem für mein Parallelport-Programm sind alle möglichen (unnützen) Sachen installiert. Nun ist es so daß Windows grundsätzlich Hintergrund-Progrämmchen, welche Festplattenzugriffe durchführen, unglaublich viel Rechenzeit gibt, egal wie hoch die Priorität meines Programmes eingestellt ist (ja genau, wieder einmal das bekannte "Windows ist kein Realtime-OS-Problem") damit diese ihre "schmutzigen Hintergrund-Spionageaktionen" zu Ende zu führen können. Das nervt, weil eigentlich außer meinem Programm auf dem Zielsystem gar nix und überhaupt nix laufen braucht und die Auslagerungsdatei kann ich notfalls auch abschalten genügend Speicher ist eigentlich vorhanden. Bei jedem Festplattenzugriff sind jedenfalls 5-8 ms weg. Konkret führt das dazu, daß mein Schrittmotor kurz anhält und dann in einer Art kurzem "Burst" die verlorene Zeit wiederaufholt (bei Steuerung über MMT-Callbacks). Wenn ich nun aber weiß welche Hintergrundanwendungen für unnütze Festplattenzugriffe verantwortlich sind kann ich die (manuell) gezielt abschießen bzw. in der Registry nach suchen und dort entfernen (meistens ist es eh irgendwelcher unnötiger Kram der nichts mit der eigentlichen Aufgabe des Rechners zu tun hat). Auf einem anderen Rechner ist es schon so schlimm, daß nicht einmal mehr Scandisk läuft, weil es wegen Festplattenzugriffen ständig neu starten muß... Nach 10 * Neustart bricht es ab. Also muß eine schnelle Lösung her. Tipps? (die mit dem µC kenne ich schon - ist wegen der Entwicklungszeit der Software keine schnelle Lösung und daher momentan nicht angedacht) Grüße, Dierk
schau doch einfach mal in den autostart ordnern (auch in der reg) und deaktivier alles was da so drin steht
HI, danke habe mir ein Autostart-Managing Tool runtergeladen. Aber eigentlich möchte ich nur die deaktivieren welche periodisch auf die Festplatte zugreifen. Wenn ich einen API-Monitor auf die laufenden Prozeße und Threads anwerfe, nach welchen APIs muß ich schauen (man kann die APIs bekanntlich filtern macht sonst ja keinen Sinn) also ich meine welches sind die APIs die den Scheduler regelmäßig veranlaßen dem jeweiligen Programm einen längerdauernden (mehrere ms) Priority-Boost zu geben...? Programme mit diesen würden dann rausfliegen, die anderen dürfen drinbleiben. Es sind nämlich tatsächlich periodische Zugriffe, die da stören. Grüße, Dierk
> Es sind nämlich tatsächlich periodische Zugriffe, die da stören.
Auch wenn du es nicht hören willst:
Windows ist kein Echtzeit-Betriebssystem!
Das, was du versuchst, ist aussichtslos. Mach's entweder korrekt (mit
einem Treiber auf Ring0) oder verpass deiner Schaltung etwas
Intelligenz (etwa ein Mikrocontroller).
Der Scheduler von Windows kann dir keine Antwortzeiten garantieren.
Niemals.
Selbst wenn du alle anderen Prozesse beendet hast, kann er deinem
Programm die CPU (für eine beliebige Zeit) wegnehmen.
Hi Dierk, ich denke du suchst etwas in der art: http://www.sysinternals.com/ntw2k/source/filemon.shtml Gruß Flo
Ja genau, danke! Werde es mal damit versuchen. Grüße, Dierk
Hast du schon mal MSCONFIG laufen lassen? Da kannst du alle möglichen Programme deaktivieren, die dein OS verlangsamen. aber vorsicht. Nur die unnützen deaktivieren, sonst hast du ein Problem START-Ausführen- MSCONFIG eingeb, OK
Hi Dierk, Stehe genau vor dem gleichen Problem. Hatest du schon Erfolg ? Gruss Gerhard
Hi, also mit FileMon ging das ganz super. Ich konnte ein Programm im Autostartordner identifizieren, welches etwa 30 mal pro Sekunde eine vxd-Datei von der Festplatte dynamisch geladen hat, danach offenbar einen einzigen Befehl aufgerief (nämlich zu schauen ob am USB-Port ein Wireless-Lan-Stick hängt) und sich dann wieder verabschiedete. Das hab ich komplett rausgeworfen (benutze den Stick sowieso nur am Laptop), notfalls starte ich das "Wireless Lan Utility" manuell. Sogar die Mausbewegungen gehen jetzt schneller! Unglaublich, wie schlechte Programmierung einer Hintergrundanwendung den Rechner ausbremsen kann. Tja, so ist das mit der Globalisierung und dem billigen Zeugs aus Fernost ;-)) Jetzt ist Ruhe, und es dauert mehrere Minuten, bis überhaupt ein Festplattenzugrif erfolgt - in der Regel extrem kurz vom Memory-Manager - notfalls könnte ich den auch noch ausschalten, hat bis jetzt aber nicht weiter gestört. Der Motor läuft stotterfrei mit max. 1000 Schritten pro Sekunde (das Anfahren der beiden 67,5 mm entfernten Endpositionen dauert damit weniger als 30 s bei 400 Schritten / Umdrehung und einem Hub von 2,5 µm pro Schritt - Direktantrieb ohne Getriebe) Läuft der Motor und scrollt man nebenher in einem großen PDF merkt man allerdings eine Verzögerung - das Steuerprogramm sollte möglichst alleine laufen, bzw. wenn andere Anwendungen laufen sollten die nicht auf die Festplatte zugreifen oder aber man läßt den Motor langsamer laufen (in meinem Fall läuft er normalerweise extrem langsam, und nur zum schnellen "Rück- und Vorspulen" brauche ich die Auflösung von 1 ms. Danke für alle Tipps, Grüße, Dierk PS: für ernsthafte kommerzielle Sachen ist natürlich ein µC oder ein echter Treiber "Pflicht" - die oben genannten Einschränkungen kann man den Leuten ja nicht zumuten.
Hi, während die 1 ms - Auflösung daheim auf meinem VIA C3 Nehmedia Board (1 Ghz, WIN98SE) mit OnBoard-Grafik und Onboard-Ethernet problemlos und stabil funktioniert, funktioniert sie auf dem Institutsrechner mit einem AMD Board (1 GHZ, WIN98SE) mit ATI Rage 128 und PCI 10base Ethernet-Karte leider überhaupt nicht - nicht mal im abgesicherten Modus. Ich frage mich auch, ob das Mainboard bzw. eine der Karten eine Fehlfunktion hat, da das Ethernet sehr oft um den Faktor 50 langsamer ist als es sein sollte, und das einfache Umbenennen einer Datei mit REN dauert unter DOS etwa 2 Sekunden! Da kann irgendwas nicht stimmen. Laut MSINFO werden sogar im abgesicherten Modus noch eine ganze Menge Treiber geladen... Eine Analyse mit Filemon und ApiMon hat keine Ergebnisse mehr gebracht, weil ich inzwischen alles rausgeworfen habe, was da hätte stören können. Das hat auch was gebracht, manchmal erhalte ich kurzzeitig 1 ms Auflösung (was vorher nie der Fall war). Einen Event-Poller (pollt auf "externe Events" der ATI Grafikkarte) habe ich z.B. inzwischen entfernt da außer dem Anschluß des Monitorkabels an die Buchse keinerlei "externe Events" möglich sind. Jetzt suche ich ein Tool/Programm, mit dem ich die jeweils beanspruchte Rechenzeit von den installierten Gerätetreibern oder Interrupts ermitteln kann, die noch so im System laufen. Grüße, Dierk PS: === Ich habe ein kleines (und schlechtes) Tool geschrieben - im Anhang -, welches den LPT1-Port jede ms toggeln kann - schließt man ein Osziloskop an oder auch nur 8 LEDs, sieht man schon ob der Rechner tatsächlich 1 ms Intervalle anbieten kann oder nicht - kann er es werden die LEDs ganz gleichmäßig auf die Hälfte der Leuchtkraft gedimmt, kann er es nicht so "flackern" sie wie Kerzen im Wind. Man kann so auch Festplattenzugriffe und andere zeitauwendige Abläufe auf Gerätetreiberebene beobachten... das Tool benötigt die INPOUT32.DLL von http://www.logix4u.net. Außerdem ist eine freeware-Komponente drin, "PILED" (findet man auf einschlägigen delphi-Seiten). Für Standard-Timer klickt man "Timer" für Multimedia-Timer klickt man MMT. Der MMT schaltet im Gegensatz zum Standard-Timer nur den Port um und nicht auch die virtuellen Leds. Die Zeit welche der Standard-Timer tatsächlich braucht wird gemessen (unter WIN98 geht es anscheinend grundsätzlich nicht besser als 55 ms es sei denn man würde versuchen die Granularität zu verändern).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.