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:
- drajwer karty sieciowej (np. dla kart NodeRunner ---> NR )
- drajwer obsługi protokołu NETBIOS (bezpośrednio związany z typem
- karty sieciowej, np. AILANBIO)
- program REDIR konieczny do przeadresowywania napędów i podłączania się do zasobów sieciowych
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" :
- NR ( około 3.5 KB )
- AILANBIO ( około 23 KB )
- REDIR ( około 25 KB )
Dla kart zgodnych z Novell "NE2000" :
- NEX000 ( około 3.5 KB )
- AILANBIO ( około 23 KB )
- REDIR ( około 25 KB )
Dla servera udostępniającego swoje zasoby dla innych dochodzi program
SERVER.EXE , np.:
- NR ( około 3.5 KB )
- AILANBIO ( około 23 KB )
- REDIR ( około 25 KB )
- SERVER ( jest on z reguły największym rezydentem: 25KB - 150KB i więcej)
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
(w skrócie X=....), np.: EMM386.EXE NOEMS HIGHRAM X=D000-D800
QEMM386.SYS ST:M RAM X=B000-B7FF
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"