Mam problem z takim procesem - ntvdm.exe. Z tego co wygooglałem - to proces odpowiedzialny za emulację programów ze środowiska dosowego na windowsach. Po odpaleniu xp wszystko ładnie śmiga - aż do momentu uruchomienia starej aplikacji pod dos, wtedy włącza się ten proces i zaczyna pożerać 100% mocy procesora i nie zostaje już nic dla BOINC'a (http://www.boincatpoland.org/wiki/BOINC)! Dodam tylko, że ta aplikacja dosowa - to nie jest żadne superwymagające cudo - tylko program sprzedażowy. W związku z czym nie powinien on sam zużywać więcej niż kilka czy kilkanaście % mocy procesora - nie mówiąc oczywiście o chwilowych "pikach" do 100%. Tymczasem po uruchomieniu tego dosowego programiku sprzedażowego - uruchamia się proces ntvdm.exe - i cały czas męczy procka ile wlezie. Macie jakieś pomysły jak wyeliminować procesochłonność tego procesu?
miałem podobny przypadek - odpalałem stare gry pod dosa w emulatorze i tez pochłaniał on 100% mocy procka - z tego co udało mi się zorientować to tego typu emulatory już tak mają, ale możliwe że się mylę...
Może spróbuj DosBOXa?
to wygląda na błąd systemu, SP2 pewnie masz więc zaktualizuj o najnowsze łatki
A to nie jest tak że tak powinno być ? Programy dosowe przecież były tak skonstruowane ze brały 100 % mocy.
Cytat: "Mchl"Może spróbuj DosBOXa?
właśnie używając DosBOX'a obciążenie procka było 100% :roll:
Ja często używam twinexpressa w dosowym okienku i jest identycznie. Nawet jak program stoi z command promptem i nic nie robi, wciąga 100% procesora :/
Problemem przy wprowadzaniu Windowsa 95 było to ze programy DOSowe były przystosowane do jednowątkowości - więc one sie nie przejmowały i wciągały całe 100 % mocy procesora - bo nikt i tak nie mógł im jej zabrać. Nie wiem jak działają emulatory ale z waszych słów wynika ze te programy umożliwiają uruchomienie aplikacji dosowych w windowsie w którym jeszcze coś może chodzić. Ale 100 % wciągania proca to chyba jest całkowicie normalne - no chyba ze te emulatory jeszcze jakoś by ograniczały sięi udawału ze powiedzmy 25 % mocy proca w windowsie to 100% dla Dosa.
tak mnie to zaciekawiło, że sam sprawdziłem.
Mam tu taki dosowy program do kopiowania dyskietek, a więc uruchomiłem go
przy starcie program dos pochłania całą dostępną moc procesora, w czasie pracy także, gdy jest uruchomiony ale nic nie robi to zużywa do 1 % mocy procesora.
AL rozwiązaniem twego problemu jest zamontowanie do komputera procesora min. dwurdzeniowego wtedy program dosowy wykorzystuje tylko jeden rdzeń a drugi może dalej spokojnie liczyć boinc.
PBT_Horpah - to niestety na tym hoście akurat niestety nie wchodzi w grę.
Możesz także użyć programu do limitowania przydziału procesora dla tego programu dosowego.
Mam na myśli np. program ThreadMaster, umożliwia on ustawienie w windzie dla wybranej aplikacji czasu procesora.
Cytat: "PBT_Horpah"AL rozwiązaniem twego problemu jest zamontowanie do komputera procesora min. dwurdzeniowego wtedy program dosowy wykorzystuje tylko jeden rdzeń a drugi może dalej spokojnie liczyć boinc.
Do czasu aż przyjdzie mu do głowy jednocześnie uruchomić dwa programy DOSowe... Wtedy przyjdzie rada "przejdź na cztery rdzenie"... I tak w koło Macieju :D
O ile dobrze pamietam, to jest stary i dobrze znany problem pod Windowsami. Jak Ktoś dobrze zauważył w czasach dobrego DOS-a niekt się nie przejmował aplikacjami wielowątkowymi.
Problem wynika z cyklicznego odczytywania zegara oraz z zapętlenia procedury (funkcji) do wykrycia czy był naciśnięty jakikolwiek klawisz. Zamiast pętli lepiej byłoby użyć odczytywanie odpowiedniego przerwania i metody "event" (?).
Niektóre programy do sprzedaży miały możliwość wyłączenia zegarka (nieznacznie pomaga), ale zmiana sposobu odczytywania klawiatury bez ingerencji w program raczej mała szansa.
Można zwiększyć w BIOS-ie szybkość czytania klawiatury (max 30znaków/s), pozornie to zwiększy szybkość reakcji komputera, ale obciążenia i tak będzie 100%.
Nowsze aplikacje DOS-owe (potocznie nazywane DOS-owe 32bitowe) są staranniej napisane (a raczej były napisane, gdy już był znany ten problem) i generują tylko chwilowe piki po 100%.
(Do zabawy polecam program NORTON COMMANDER - tam można wyłączyć pokazywanie zegarka - to wtedy widać jak spada zużycie procesora, ale wystarczy naciśnać klawisz - a skoczy do 100%)
Natomiast co dwurdzeniowości i HT to wszystko zależy od programu, wiekszość DOS-owych tego bardzo nie lubi (np. SUBIEKT4 - na stronie producenta specjalna łatka). Ewentualnie ustawić koligację procesu na jeden procesor, ale nie wiem jak to przypisać na stałe.
Wydaje mi się z dwurdzeniowych procesorów lepiej sprawuje sie AMD, a to ze względu, że był kiedyś znany taki problem z grami (chyba Need For Speed któraś tam wersja) i została wypuszczona specjalna łatka, która miała likwidować (zmiejszyć) skutki dwujajeczności. Dzięki temu a także przy okazji poprawiło się programom DOS-owym.
W swoim paskudnym życiu popełniełem ponad (od 86r) kilkaset instalacji różnych programów DOS-owych w różnych sieciach i jak do tej pory nie spotkałem się z rozwiązniem tego problemu. Oczywiście jak to w komputerach mogę oczymś nie wiedzieć - i trzeba szukać (googlować :D )!
No a w DOSBoksie też się tak dzieje?
CytatIn general, the [NT]VDMs and similar technologies do not satisfactorily run many older DOS programs on today's computers. (...)
A common solution to these problems is to use a full CPU emulator such as DOSBox. The disadvantage is that it does not allow a totally transparent integration with the host operating system and it is slower.
Wirtualna maszyna DOS jest środowiskiem emulacji systemu MS-DOS i 16-bitowego systemu Windows, używanym przez starsze aplikacje. Aktywne procesy 16-bitowe są widoczne jako wątki procesu maszyny wirtualnej DOS systemu Windows (NTVDM). Poza aplikacjami 16-bitowymi, proces NTVDM zawiera wątek "pulsu", który co 55 milisekund symuluje przerwanie zegarowe (18 razy/s), oraz wątek Wowexec.exe, który pozwala na wykonywanie zadań 16-bitowych i obsługę dostarczania 16-bitowych przerwań. Właśnie ten wątek umożliwia działanie 16-bitowych aplikacji w 32-bitowym środowisku Windows. Podsystem WOW jest udostępniany przez proces NTVDM, w którym działają poszczególne aplikacje Win16. Podczas monitorowania tych aplikacji będą widoczne również wątki pulsu oraz Wowexec.
W danej chwili może działać tylko jeden z wątków 16-bitowych aplikacji działających w procesie NTVDM. Jeżeli wątek którejś z tych aplikacji jest uprzywilejowany, to NTVDM zawsze przywraca mu sterowanie. Ogranicza to wydajność aplikacji 16-bitowych działających równocześnie w tym samym procesie NTVDM, jednakże ograniczenie to jest widoczne jedynie wówczas, gdy procesor jest mocno obciążony (tzn. wiele uruchomionych aplikacji).
Ze względu na to, że aplikacje 16-bitowe działają w jednym procesie, ich monitorowanie może być utrudnione. Konieczne jest rozróżnienie poszczególnych wątków procesu NTVDM. Systemy Windows umożliwiają uruchamianie aplikacji 16-bitowych w oddzielnych procesach NTVDM, we własnej przestrzeni adresowej. 16-bitowe aplikacje Windows można monitorować identyfikując je na podstawie ich identyfikatorów wątków lub uruchamiając je w oddzielnych przestrzeniach adresowych.
Systemy Windows umożliwiają uruchomienie 16-bitowej aplikacji Windows w oddzielnym, prywatnym procesie NTVDM, który posiada własną przestrzeń adresową. Eliminuje to współzawodnictwo pomiędzy wątkami w jednym procesie NTVDM, umożliwiając w ten sposób w pełni wielozadaniowe działanie aplikacji 16-bitowych. Aby uruchomić aplikację 16-bitową w oddzielnej przestrzeni adresowej, należy:
W wierszu poleceń napisać: start /separate nazwa_procesu (ewentualnie w *.bat)
Jeżeli wydajność aplikacji MS-DOS w systemach Windows nie jest zadowalająca, można próbować zmodyfikować pewne ich ustawienia:
1) wybrać wyświetlanie aplikacji na pełnym ekranie, co zwiększa wydajność operacji wiązanych z wyświetlaniem obrazu, (MODE CON COLS=80 LINES=25). Zauważyłem, że niektóre karty VGA (np. S3) na PCI takjakby szybciej pracują (odświeżają ekran) w trybie pełnoekranowym, niż dużo lepsze karty na AGP lub PCI Express. Jeśli głównym zadaniem komputera są aplikacje 16-bitowe, to można zaeksperymentować.
2) wyłączyć funkcję emulacja zgodnego czasomierza sprzętowego, która zawsze powoduje spadek wydajności. (dotyczy to Windowsa NT, w XP nie wiem gdzie to jest, ale prawdopodobnie można by to poszukać w rejestrze),
3) należy spróbować zmniejszyć poziom wykrywania bezczynności, wyłączyć tryb szybkiego wklejania,
4) Aplikacje DOS-owe korzystającą z drukarki, należy skonfigurować do portu LPT1 lub LPT2
zamiast portu równoległego. Większość aplikacji skonfigurowanych do używania portu LPT
korzysta z przerwania Int17, natomiast po wybraniu portu równoległego drukują one
bezpośrednio do drukarki.
Podsumowanie:
W zasadzie jesteśmy bezradni i wszystko zależy jak aplikacje 16-bitowe zostały napisane:
Jeśli czekają na znak z klawiatury korzystając z procedur systemowych to nie zabierają czasu procesora (np. za pomocą funkcji DOS'a INT21H - to system potrafi rozpoznać tą pętle i zdjąć z niej priorytet po pewnym czasie). Inne, które w "głupich pętlach" sprawdzają non stop stan klawiatury powodują że, procesor nie potrafi rozpoznać, czy jest to funkcja jalowa, czy też użyteczna i OS będzie na 100% obciążony. Zmiana priorytetu procesu z high na low wg mnie nie wiele pomoże, lepiej zamknąć nie potrzebne aplikacje.
A jak nic nie pomoże, to pozostaje jeszcze www.tamedos.com
Zaznaczam, że korzystałem szeroko z różnych tekstów z internetu, jeśli kogoś uraziłem korzystając z jego materiałów - to przepraszam, ale zrobiłem to w celu krzewienia starożytnej wiedzy o DOS-ie. Oczywiście, nie mam patentu na wiedzę i mogę sie w wielu kwestiach mylić.
Niestety muszę kończyć - Żona mnie woła.