Optymalizacja pamięci w sieci Lantastic za pomocą programów EMM386 i QEMM386 wer. 7.5


I. Podstawowe uwagi

Sieć Lantastic jako oprogramowanie sieciowe pod systemem DOS musi dla swojej pracy załadować do pamięci rezydenty, czyli nieduże programy stale przebywające w pamięci operacyjnej (rezydujące w niej).

W systemie DOS wszystkie sieci komputerowe pracują w ten sposób, np. Novell NetWare (na stacjach roboczych), Novell Lite, Windows for Workgroups, D-Link LANsmart i inne.
Rezydenty takie pracują w tle dzieląc prace sieciowe z pracą pierwszoplanową (aktualnie wykonywana aplikacja użytkownika).

W sieci Lantastic ładowane są następujące rezydenty:

Tyle rezydentów jest konieczne jeśli ma to być przynajmniej stacja robocza, czyli możliwość podłączania się do zasobów innych komputerów, które są aktualnie serverami sieci.

Minimalna ilość rezydentów dla stacji roboczych :

Dla kart firmy Artisoft "Node Runner" :

Dla kart zgodnych z Novell "NE2000" :

Dla servera udostępniającego swoje zasoby dla innych dochodzi program SERVER.EXE , np.:

Niektórzy z instalatorów ładują także mały rezydentny program do szybkiego zarządzania siecią, o nazwie:

  • LANPUP ( około 7.5 KB ) Powyższe wielkości zajętości pamięci dla AILANBIO i REDIR są już powiększone ze względu na optymalizację szybkości pracy sieci Lantastic.
    Standardowo tuż po zainstalowaniu sieci są one nieco mniejsze (o około 5-8 KB). Dyskusja takiej optymalizacji i korzyści z niej wynikającej jest wykonana w innym miejscu.
    Nie podano tutaj na razie parametrów wywołania powyższych rezydentów aby nie zaciemniać obrazu.

    II. Uwagi o ładowaniu rezydentów "w górę" (w obszar HIGH RAM):

    Dopóki nie będziemy mogli pracować na systemie operacyjnym 32-bitowym, będziemy mieli wielkie problemy z przydzielaniem pamięci operacyjnej dla różnych programów. Ciągle takiego systemu nie ma i dlatego w 16-bitowym systemie DOS-a wprowadzono obejścia aby programy mogły wykorzystać zainstalowaną pamięć w komputerze powyżej granicy 640 KB.
    System DOS może zaadresować bezpośrednio do 1024 KB z czego pierwsze 640 KB jest używane dla tzw. okna DOS-a, a pozostałe 384 KB używane jest do przechowywania drajwerów komunikacji ze sprzętem.
    Część obszaru 384 KB da się wygospodarować do przechowywania programów rezydentnych, takich jak np. drajwery dla sieci Lantastic.

    Taki obszar zwany jest HIGH RAM.

    Istnieje na rynku kilka programów do zarządzania pamięcią operacyjną, które potrafią wykorzystać obszar powyżej granicy 640 KB i umieszczać rezydenty w obszarze HIGH RAM tak aby nadal były aktywne.
    Przy okazji programy takie przygotowują fizycznie dostępną pamięć powyżej obszaru 1024KB (powyżej 1 MB) jako pamięć typu XMS i/lub EMS .

    Najbardziej znane z nich to:

  • EMM386 firmy Microsoft (optymalizacja za pomocą komendy: MEMMAKER)
  • QEMM386 firmy Quarterdeck (optymalizacja za pomocą komendy: OPTIMIZE)

    Program EMM386 wchodzi w skład systemu operacyjnego MS-DOS , Windows oraz Windows for Workgroups.
    Natomiast program QEMM386 jest ciągle jednym z dziesięciu najlepiej sprzedających się programów na rynku amerykańskim.
    Omówimy ładowanie Lantastica za pomocą obydwu produktów. Generalnie problemem jest, gdy kilka drajwerów rezyduje w obszarze HIGH RAM.
    Pojawiać się wtedy mogą konflikty w użytkowaniu pamięci, pomiędzy sprzętem a programem, programem jednym a drugim itp.
    Gdy rezydenty takie są w dolnej pamięci, to z reguły nie ma problemów, lecz nie ma wtedy dość wolnego obszaru dla podstawowych aplikacji DOS-owych, np. baz danych pisanych w Clipperze.

    Dlatego staramy się jak najwięcej z tych rezydentów umieścić "w górze", lecz robić to trzeba ostrożnie aby nie było problemów z codzienną pracą. Podamy w dalszej części, jak należy to zrobić za pomocą obu wymienionych produktów.

    Na początek najważniejsze uwagi wspólne dla obu produktów:

    Drajwer bezpośrednio pracujący z kartą sieciową najlepiej jest umieścić w dole, tzn.:

    NR i NEX000 (zajmują i tak mało pamięci)
  • Drajwery takie często wykorzystują wydzielone obszary pamięci w HIGH RAM a umieszczenie tych programików "w dole" zapobiega już na starcie wielu konfliktom. Zatem nie wstawiaj przed nimi żadnych poleceń typu: LH czy LOADHIGH czy LOADHI
  • W niektórych przypadkach trzeba koniecznie wykluczyć z optymalizacji (użytkowania przez rezydenty) obszary pamięci w HIGH RAM w przypadku wykorzystywania ich np. przez karty sieciowe lub inny sprzęt, np. CD-ROM, czy kartę dźwiękową itp. Często pomocne może się okazać wykluczenie następujących obszarów:
    B000-B7FF (zajmowany standardowo przez pamięć video - używana nieraz przez karty sieciowe)
    D000-D800 (dla niektórych kart sieciowych)

    W razie wątpliwości powinieneś sięgnąć do dokumentacji urządzeń, z którym współpracuje dany rezydent.
    Wykluczenie takiego obszaru tak w EMM jaki i QEMM odbywa się podobnie za pomocą opcji EXCLUDE

    Sprawy te będą jeszcze dalej dyskutowane.

    Pomocą mogą być następujące narzędzia do sprawdzania zajętości pamięci:

  • komenda MEM z systemu MS-DOS
  • polecenie MI z pakietu programów narzędziowych PCTOOLS
  • program MANIFEST wchodzący w skład pakietu QEMM386

    Najlepsze ustawienia za pomocą programu EMM386 :

    Optymalizacji dokonujemy za pomocą polecenia MEMMAKER , a wewnątrz niego ustawiamy opcje aby nie tworzył pamięci typu EMS, gdyż zyskujemy dzięki temu dodatkowy obszar wielkości 64 KB (wykorzystywany na ramkę pamięci EMS). Jeśli jest koniecznie potrzebna pamięć typu EMS to oczywiście w zapytaniu MEMMAKER-a dajemy, że ma być robiona pamięć typu EMS. Po wykonaniu optymalizacji należy "ręcznie" za pomocą jakiegokolwiek edytora tekstowego dokonać w zbiorze CONFIG.SYS znajdującym się w katalogu głównym dysku systemowego, następujących zmian:

    DEVICE = C:\DOS\HIMEM.SYS
    DEVICE = C:\DOS\EMM386.EXE RAM NOEMS HIGHSCAN

    Następnie w zbiorze STARTNET.BAT sprawdzamy, czy drajwer karty jest ładowany do pamięci podstawowej (czyli "w dół").

    Zatem ma być: NR zamiast np.: LH NR

    Takie same efekty można osiągnąć już podczas optymalizacji za pomocą programu MEMMAKER, lecz trzeba wtedy wybrać opcję CUSTOM i podać które rezydenty mają być poddane optymalizacji.
    Za pomocą tych wszystkich ustawień uzyskujemy około 190 KB obszaru dla naszych rezydentów. Powinniśmy wtedy mieć wolne pod DOS-em około 610.000 Bajtów wolne. Problemem może być jedynie używanie dużych buforów sieciowych w komendzie NET_MGR.

    C:\LANTASTI\STARTNET.BAT NR LH AILANBIO @C:\LANTASTI\STARTNET.CFG LH REDIR nazwa_komputera @C:\LANTASTI\STARTNET.BAT LH SERVER.EXE C:\LANTASTI.NET Najlepsze ustawienia za pomocą programu QEMM386 : Optymalizacji dokonujemy za pomocą polecenia OPTIMIZE. Jest on uważany za najlepszy program na rynku tego typu. Po wykonaniu optymalizacji należy "ręcznie" za pomocą jakiegokolwiek edytora tekstowego dokonać w zbiorze CONFIG.SYS znajdującym się w katalogu głównym dysku systemowego, następujących zmian: DEVICE = C:\QEMM\QEMM386.SYS RAM ST:M Następnie w zbiorze STARTNET.BAT sprawdzamy, czy drajwer karty jest ładowany do pamięci podstawowej (czyli "w dół"). Zatem ma być: NR zamiast np.: LOADHI NR Za pomocą tych wszystkich ustawień uzyskujemy około 190 KB obszaru dla naszych rezydentów. Powinniśmy wtedy mieć wolne pod DOS-em około 610.000 Bajtów wolne. Problemem może być jedynie używanie dużych buforów sieciowych w komendzie NET_MGR. C:\LANTASTI\STARTNET.BAT NR LOADHI AILANBIO @C:\LANTASTI\STARTNET.CFG LOADHI REDIR nazwa_komputera @C:\LANTASTI\STARTNET.BAT LOADHI SERVER.EXE C:\LANTASTI.NET Niezwykle pomocne są dwa programy wchodzące w skład pakietu QEMM, a mianowicie:
  • QSETUP - ustawia opcje sposobu pracy QEMM i ładowania różnych rezydentów
  • MFT - raportuje sposób pracy pamięci operacyjnej, QEMM oraz alokację rezydentów i inne Za pomocą programu QSETUP dobrze jest dla dobrej pracy rezydentów Lantastica ustawić opcje:
  • Wejść do "U = Enable or disable DOS-Up"
  • Wybrać "P Partial"
  • Wszystkie opcje ustawić na "No" z wyjątkiem "H = DOS=HIGH Yes" Po tych czynnościach wykonać powtórnie optymalizację pamięci za pomocą polecenia OPTIMIZE. Oto parametry wywołania polecenia OPTIMIZE, które są najczęściej wykorzystywane: OPTIMIZE /q - szybka automatyczna optymalizacja, bez zbędnych zwłok czasowych i pytania się OPTIMIZE /q /st - wykonaj szybką optymalizację z jednoczesnym sprawdzeniem opcji STEALTH umożliwiającej uzyskanie maksymalnie dużego obszaru w HIGH RAM dla rezydentów. OPTIMIZE /q /auto - bardzo ważna optymalizacja testująca automatycznie konflikty pomiędzy różnymi rezydentami i sprzętem, która dodaje opcje QEMM-a "Exclude " (X=) do linii wywołania QEMM w CONFIG.SYS. Warto to zrobić na zakończenie całej instalacji i optymalizacji pakietem QEMM. Może to rozwiązać wiele problemów za nas. OPTIMIZE /q /ri - wykonaj reinstalację pakietu QEMM Aby zapobiec umieszczaniu określonych rezydentów w górnym obszarze można utworzyć w katalogu pakietu QEMM, np. w C:\QEMM zbiór o nazwie: OPTIMIZE.EXC, który powinien zawierać nazwy tych programów, jednak bez rozszerzeń, np.: C:\QEMM\OPTIMIZE.EXC command nr Po zakończeniu optymalizacji trzeba dokładnie sprawdzić funkcjonowanie komputera, sieci i oprogramowania użytkowego, czy się nie zawiesza, czy komunikacja z innymi komputerami nie ulega zerwaniu lub zawieszeniu. Zakładam, że dobrze ustawiłeś parametry dla karty sieciowej i sama w sobie nie jest w konflikcie np. z innymi przerwaniami lub adresami pamięci. Przy okazji polecam przerwanie ustawić na IRQ=15 lub 10 lub 5. Nie polecam używać przerwania IRQ=3 ponieważ obsługuje ono standardowo drugi port szeregowy COM2. Jeśli chodzi o adres pamięci I/O Base to polecam ustawienie I/O=320. W celu przetestowania pracy komputera uruchom program SysInfo (SI) i zbadaj transfer dostępu sieciowego do innych komputerów, tzn. dysków sieciowych. Jeśli w tym momencie komputer się nie zawiesi, to jest to już bardzo pocieszające. Trzeba także sprawdzić pracę naszych aplikacji codziennego użytku. UWAGA: Jeśli komputer się zawiesi, to często objawia się to wypisami na ekranie od programu QEMM, który lojalnie nas informuje, że to nie jest błąd pakietu QEMM lecz konflikt pomiędzy różnymi programami będącymi aktualnie w pamięci, lub pomiędzy jednym z nich a sprzętem. Następnie w dolnej części podaje adres szesnastkowy w pamięci operacyjnej, na którym wykrył taki konflikt oraz kod błędu, np.: #06 Nie wdając się w szczegóły opisane w dokumentacji do pakietu QEMM najważniejszym dla nas jest ów adres przed dwukropkiem. Należy go zapisać, potem przeładować komputer z takim samym ustawieniem jak poprzednio i natychmiast uruchomić program MANIFEST (komenda: MFT). Tam przechodzimy do opcji "First Meg" i "Programs" i szukamy jaki program rezyduje pod zapisanym przez nas adresem. Program ten powinniśmy umieścić w dolnym obszarze pamięci zamiast (jak przypuszczam) w górnym. Podsumowanie i kolejne kroki instalacji QEMM:
    • Instalacja za pomocą komendy: OPTIMIZE /q /ri lub z dyskietki instalacyjnej (INSTALL)
    • Sprawdzenie czy można użyć opcji STEALTH: OPTIMIZE /q /st
    • Stworzenie zbioru: OPTIMIZE.EXC
    • Wyklucznie niektórych opcji za pomocą: QSETUP
    • Wykonanie końcowej optymalizacji: OPTIMIZE /q /auto
    • Skrupulatne wykonanie wszelkich testów na zawieszanie się komputera i pracy programów
    UWAGA: Jeśli mimo wszystkich zmian nadal mamy problemy z pracą naszego oprogramowania, to można użyć specjalnych opcji QEMM, ustawianych w programie QSETUP w opcji: "P=Review or change QEMM parameters" a tam wybierając "T=Set up QEMM for troubleshooting"