LANtastic v4.1 COMMAND LINE SWITCHES Default values in brackets [ ] þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ Below are listed the command line switches for the Artisoft LANtastic Network Operating System. Special attention has been paid to those switches whose valued directly affects network performance. Since network performance is very dependent on applications being run and the hardware used, specific values cannot be recommenced. It is hoped that if the function is better understood tuning the system for optimum performance will be easier. This is intended to be used in conjunction with the Artisoft LANtastic Performance Bulletin. AEX SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ Values for these switches have very little to do with network performance, in empirical testing we have determined that the default settings are best for the LANtastic Network Operating System. PACKET_SIZE= Range 574 to 4300 decimal [1500) Empirical testing shows that increasing packet_size will increase the speed that programs are loaded and files will copy across the network on small networks. Testing shows that optimum size is 1500[default ) for use with the LANtastic Network Operating System with large or heavily loaded networks. This parameter may have great effect on third party netbios applications. TRANSMIT_BUFFERS= Range 2 to 80 decimal [20) The memory on the adapter card is divided in half. Half is allocated to transmit buffers , half to receive buffers. We allocate several small buffers and several large buffers. This parameter does NOT affect resource exhausts. Resource exhausts are caused by running out of receive buffers, not transmit buffers. AILANBIOS SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ ACK_TIMEOUT= Range 0 to 254 decimal [2) Ack timeout can have a large effect on system performance; too low a value can result in a large number of retries, decreasing network throughput. The default value was determined with empirical testing, normal network traffic during a benchmark took about 1.5 ticks for the ack to return. (This is very machine/application specific, this value was determined by using a sniffer on the network during the tests to actually look at the network traffic.) We recommend that if this value is to be changed that the initial value chosen be low and then slowly increased as long as performance improves. The speed of the machine and the link is a determining factor, this value should be set higher the slower the link, ie 2 for 10mbps ethernet, 30 for a 9600 baud modem link, 122 for 2400 baud modem link. (Ack_timeout and Retry Period are essential the same value, the code currently uses the value of the largest of these settings.) BUFFERS= Range 0 to 254 decimal [1] The performance effects of the buffers= switch are strongly dependent on the applications using the netbios. For example, there is absolutely no performance advantage to having more buffers than the number of NETBIOS sessions actively receiving messages, since only one message can be received at a time on each session. Also, if the receiving application already has a pending NETBIOS receive at least as large as the sender's INITIAL_SEND_SIZE when the message is received, then buffering is not needed. In the case of REDIR, this is always the case. It is also true of SERVER if the "request size" is set to at least as large as the workstations' INITIAL_SEND_SIZE's. As for the memory required for each buffer, there are a few bytes of overhead required to maintain status information for each buffer, and the total size is rounded up to a paragraph (16 bytes). FORCE_ACK_MODE Starting with LANtastic release 4.0, a heuristic algorithm was introduced into AILANBIOS which reduces network packets for particular types of NETBIOS session exchanges (in particular, the types of exchanges used by REDIR and SERVER). A new "ACKless" mode is entered on each session which meets the heuristic criterion, effectively reducing the number of packet transmissions from four to two for each server request. This switch disables "ACKless" mode, forcing each session receive to be acknowledged explicitly. This switch can be used to alleviate problems when a bridge is used between two networks of different speeds (i.e., Central Station Dial-UP), to prevent overflow of the bridge's buffers with unacknowledged sends. INITIAL_SEND_SIZE= Range 1 to 65535 decimal [570] This should not exceed the Packet Size. If this value exceeds the Server Request size an Initial Send Size Buffer is used, this will add more overhead to the system and decrease performance. See Server Request Size for recommend values. MAX_NAMES = Range 1-253 [32) If you run out of names, an attempt to add another name will result in NETBIOS error 0Eh, "Name table full", as documented in the NETBIOS specification. The user's perception of this is usually a failure on an attempt to load REDIR. REDIR adds five names (plus one if you are using the single-node AI version of LANtastic); SERVER adds one name if remote booting is enabled. Each name requires 16 bytes of memory. MAX_NCBS = Range 1-255 [32) You should allocate at least as many NCBS as will be concurrently in use by all NETBIOS applications. Some current limits for Artisoft products are: REDIR: 4 NCBs SERVER: (# logins) + (# tasks) + (# adapters) + 3 NET CHAT: 8 NCBs Each NCB requires 48 bytes of memory. MAX_SESSIONS = Range 1-254 [32) Allocate at least one per REDIR login plus one per SERVER login plus one for NET CHAT. Note that logging into yourself requires two sessions. Each session requires 80 bytes of memory. NCBS = Range 1-255 [32) This parameter is variable primarily to provide compatibility with IBM's NETBIOS specification, which allows the NCB limit to be set AFTER the NETBIOS has been started (using the NBSETUP program, for example). There is no real advantage to using this parameter at any value BUT one matching the MAX_NCBS parameter. If the switch is set to a value lower than the MAX_NCBS then memory is allocated but not used hence wasted. RETRY_PERIOD= Range 0 to 254 decimal [2) Sets the rate (in ticks per retry) that netbios requests which expect a response are sent out until that response is received. For example, when you CALL another node (as when doing a NET LOGIN), the CALL packet is retried until the requested server answers, or a timeout occurs, indicating the server is not present. Generally, a smaller RETRY_PERIOD can improve performance, since lost/garbled packets are retransmitted sooner. However, if it is set so low that you are retrying even before a legitimate response can be returned (as with a slower network medium, such as LANtastic Z, Central Station, etc.) performance is actually degraded, since you generate and process needless retries. RUN_BURST= Range 0 to 254 decimal [10) AILANBIOS can schedule on three events: 1> Receipt of a hardware interrupt from the network adapter, due to message received, transmit complete, etc. 2> Timer ticks 3> Issuance of INT 5Ch (Netbios API) by the user application Once it has taken control, AILANBIOS can run until it has run out of things to do, or until its RUN_BURST time has been exceeded, in which case it will exit and reschedule at the next opportunity. ALONE does not modify this value. You may wish to use a higher value with ALONE, since foreground performance on a dedicated server is not an issue. SESSIONS= Range 1 to 254 decimal [32) This parameter is variable primarily to provide compatibility with IBM's NETBIOS specification, which allows the Session to be set AFTER the NETBIOS has been started (using the NBSETUP program, for example). There is no real advantage to using this parameter at any value BUT one matching the MAX_SESSIONS parameter. If the switch is set to a value lower than the MAX_SESSIONS then memory is allocated but not used hence wasted. SIZE= Range 1 to 4300 decimal [570) Keep the same as the largest initial send size, this is the largest Initial Send Size on all the nodes establishing a session with this computer. (See ailanbio buffers above, this in not normally used by our network, only by third party netbios applications.) TIMEOUT= Range 1 to 254 decimal (8) This value is basically for logins, you may want to increase this value on a really busy network if a login fails on a server you KNOW is there. This value should also be increased if many computers are logging onto a slow computer at the same time. LANBIOSx SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ Values for these switches have very little effect on network performance, the default settings are best for general LANtastic network performance. BUFFERS= Range 3 to 255 decimal Application specific, if network traffic consists of many small requests then increasing the number of buffers will improve performance. MODE= One of the following choices: 8K 32K Mode 8k(default) increases overhead very slightly, if every micro second is important then mode 32 will provide optimum performance. This is a trade off between size and speed with only very slight performance increase for greater size. TIMEOUT= Range 1 to 255 decimal This value is basically for logins, you may want to increase this value on a really busy network if a login fails on a server you KNOW is there. This value should also be increased if many computers are logging onto a slow computer at the same time. REDIR SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ BUFFERS= Range 1 to 64 decimal (1) Redir Buffers are used for sequential file reads and writes smaller than the redir buffer size. If your application program has more than 1 file open for a sequential read or write at one time then the buffers on the redir command line should be increased to match the number of files the application can have open at one time. Large reads and write, random access reads & writes, and files opened in shared mode are not buffered. This is an important consideration when you are running multitaskers on the workstation, since you can have more than one application running at one time the number of files open for small sequential reads will increase as you have more applications running. If there is not a redir buffer available, one that is in use gets flushed and reused increasing system overhead and decreasing performance. LOGINS= Range 1 to 255 decimal [2) This parameter will have no effect on system performance but will affect the size required for redir. Each login uses 56 bytes. SIZE= Range 512 to 32768 decimal [1024) Redir buffers are only used for sequential reads and writes, if the amount of information requested is larger than the buffer size the buffer is bypassed and the data is read directly to/from the users applications buffer. If the amount data requested is smaller than the buffer it is buffered until the buffer is full and then transmitted. Thus a series of small reads and writes are combined into one large read/write reducing the number of network transmissions. Large reads and write are transmitted directly from application buffer bypassing the redir buffer and eliminating the overhead of moving data between redir buffer and application. SERVER SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ LOCK_HOLD_TIME= One of the following choices: DISABLED 2 3 4 5 [9) 13 18 27 36 45 54 63 72 81 90 108 126 144 162 180 Specifies the length of time in ticks (1/18 second) that the server will wait for a record lock before assuming the request has failed. Setting a higher value in this field can help increase server response time if you have a lot of user contention within a database. We have found with empirical testing that this value increases the amount of time it takes to initially open a file. This decrease in speed must be balanced against the savings in holding a request. If database files are no used often on the network disable the Lock_Hold_Time. LOGINS= Range 1 to 300 decimal [5) One request buffer plus approximately 100 bytes is allocated for each user, see request buffer for more information on size of buffers. This does setting does not affect system performance. NETWORK_BUFFER_SIZE= One of the following choices: 2k [4K) 6K 8K 10K 12K 14K 16K 20K 24K 28K 32K 40K 48K 56K One network buffer is allocated for each network task. This represents the largest chunk of file I/O that is read from or written to the disk and transferred to/from the workstation. Larger values will improve the performance of large file read/write requests, since they won't have to be broken down into many small chunks. For example, COPY and XCOPY benefit greatly. NETWORK_TASKS= Range 1 to 32 decimal [1) The number of network tasks determine how many operations can be simultaneously handled by server. If more requests than network tasks are received the excess tasks have to be rescheduled for the next active period. PRINTER_BUFFER_SIZE= One of the following choices: [512) 1K 2K 3K 4K 5K 6K 8K 10K 12K 14K 16K 18K 20K 24K 28K 32K See manual. This setting does not affect overall system performance. Increasing the size of the buffer can improve print despooling. PRINTER_TASKS= Range 0 to 5 decimal [1) Printer tasks should be set to the no more than the number of printers attached to the server. We have reports that printer tasks larger than 1 will slow down printing in some instances (Windows run on server, Quicken on server, Clipper 5.0 on server, etc). REQUEST_SIZE= Range 14 to 2048 decimal [14) Represents the maximum REDIR request size which will be processed with a single NETBIOS receive request in the SERVER. At it's default size (14 bytes), only the smallest requests are handled in one transaction (lock, unlock, close, read, etc.). An intermediate size of 60-100 bytes will improve the performance of most path operations (open, find first, rename, delete). A larger value of 570+ bytes will handle all REDIR requests except large writes, and will have the added benefit of eliminating the need for initial send buffering in AILANBIOS. RESOURCE_CACHE= Range 1 to 50 decimal [1) A disk or printer resource are those resources created in NET_MGR shared resources. Each time a path operation is performed the resource must be checked to see if the user has proper permissions. Caching the resources(storing this information in memory) will eliminate the server going to disk to look up this information. This will improve performance on path operations (open, find first, rename, delete, etc...) when multiple disk or printer resources are in use at the same time on the server. There is no advantage to setting this value higher that the number of concurrently used resources. The overhead is about 850 bytes per entry. RUN_BUFFER_SIZE= Range 0 to 1024 decimal [127) Buffer used by the net run command, set to 0 to disable net runs. RUN_BURST= Range 1 to 255 decimal [14) Server schedules on 5 events they are: 1> Timer ticks 2> Netbios request completion 3> Foreground task idle (ex application waiting for keystroke calls int28) 4> Foreground task keyboard wait 5> Foreground task dos calls. Once server has taken control it will run until it has run out of things to do, or until its Runburst time has been exceeded, in which case it will exit and reschedule. SEEK_CACHE= One of the following choices: [NONE) 1K 2K 4K 8K 12K 16K 20K 24K 28K 32K 40K 48K 56K 64K The seek cache caches information on where the file is located on disk and where in the file a user is located. It does NOT cache data from the file. A seek cache will only significantly affect performance of random-access file operations if: 1> The files being randomly accessed are relatively large, typically 100K or more. 2> The files are kept open and are accessed frequently enough to collect useful cache data. For these conditions, even a small cache will be helpful, and the larger the cache, the more improvement will be realized. No publicly available benchmarks have been performed, but we have seen throughput improvements as high as 25%. You can compute the optimum size for this cache with the following formula: Add the size of any large frequently used database files (in bytes) and divide this by your hard drives cluster size (normally 4096) This gives the number of clusters used. Each cluster used requires 32 bytes , each open file requires 32 bytes. Maximum performance is achieved when the cache size is >=32*(number of clusters used + number of files.) LANCACHE SWITCHES þÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþ AFTER_IO_DELAY= Range 0 to 3600 decimal [3) The AFTER_IO_DELAY is the period after the LAST disk read or write the system will pause before flushing the cache to the hard disk. This timer is reset after every read and/or write request. This allows disk writes to be made during the systems idle time. Since this timer is reset every access, it will NEVER expire on a busy system. CACHE_SIZE= Range 16 to 16000 decimal FAST_IRQ= [None] none 0-15 Typically disk caches deactivates (masks) all irq's while writing to the hard drive. This can have a deleterious effect on high speed communications programs. This switch is intended to resolve these problems. If the communication programs ISR( Interrupt Service Routines) executes quickly, and does not invoke any BIOS or DOS functions, and does not re-enable interrupts before issuing an End-Of-Interrupt (EOI) command to the Programmable Interrupt Controller (PIC) this switch will allow the ISR to be processed. The switch may be repeated for each desired IRQ. This switch was specifically designed to eliminate problems associated with high speed Zmodem up and downloads via a serial port. LONG_WRITE_DELAY= Range 0 to 3600 decimal [12) This is the maximum amount of time that the cache will cache writes before forcing a flush of the cache. This delay is necessary on a busy system that may not have the needed idle time to allow the buffer to flush using the AFTER_IO_DELAY. The longer this setting the more time is allowed to wait for an idle period. The data in the cache is in a very critical state during write caching. If the computer looses power or locks before a flush data will be lost and file corruption is possible. TYPE= One of the following choices: CONVENTIONAL EMS (EXTENDED) XMS On computers without hardware EMS boards, Extended memory is usually the fastest cache, next comes XMS memory and finally EMS memory. ON 286's with hardware EMS boards EMS memory is usually the fastest. Lancache is a track buffering cache rather than a sector buffering cache, lancache stores it's track map in conventional memory. A formula for LANcache's TSR size is: 5120 + [1024 * num_disk_sectors/track] + fudge_factor. Lancache's lookup tables are stored in conventional memory to make the lookups faster and enhance the overall performance of the cache. LANcache will not perform after writes if VERIFY is ON. VERIFY must be OFF before LANcache can perform after_io_delays.