ntvdm.exe

Zaczęty przez AL, 19 Wrzesień 2007, 02:46

AL

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! 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?

miszol

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ę...

Mchl

Może spróbuj DosBOXa?

W nagłych wypadkach wzywać przez: mail: mchlpl[at]gmail.com | PM|mchl[a]boincatpoland.org

[PBT] Horpah

to wygląda na błąd systemu, SP2 pewnie masz więc zaktualizuj o najnowsze łatki

PMG

A to nie jest tak że tak powinno być ? Programy dosowe przecież były tak skonstruowane ze brały 100 % mocy.

Wikipedia - tam też można czytać o okrętach

miszol

Cytat: "Mchl"Może spróbuj DosBOXa?

właśnie używając DosBOX'a obciążenie procka było 100%  :roll:

TJM

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 :/

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

PMG

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.

Wikipedia - tam też można czytać o okrętach

[PBT] Horpah

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.

AL

PBT_Horpah - to niestety na tym hoście akurat niestety nie wchodzi w grę.

[PBT] Horpah

#10
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.

Mchl

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

W nagłych wypadkach wzywać przez: mail: mchlpl[at]gmail.com | PM|mchl[a]boincatpoland.org

TERVEPERKELE

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   )!

D_T_G

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.


TERVEPERKELE

#14
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.