Tuning: Network operating systems
NOS Tuning Details
Tuning parameters for RedHat Linux 6.1
Tuning RedHat Linux was the most involved of the four operating systems. First are the kernel modifications. A patch for RAID was applied (patch: raid-2.2.14-A2) and a modification to a file system parameter in the kernel source code. Changed EXT2_MAX_GROUP_LOADED from 8 to 512 in the file /usr/src/linux/include/linux/ext2_fs_sb.h. The modifications require a kernel rebuild.
Next, further file system tuning was done on the process that handles flushing dirty buffers to disk. These parameters were adjusted as follows using the update command as root.
|
Parameter |
Value |
|
0 - Max fraction of LRU list to examine for dirty blocks |
100 |
|
1 - Max number of dirty blocks to write each time bdflush activated |
5000 |
|
2 - Num of clean buffers to be loaded onto free list by refill_freelist |
640 |
|
3 - Dirty block threshold for activating bdflush in refill_freelist |
2000 |
|
4 - Percentage of cache to scan for free clusters |
150 |
|
5 - Time for data buffers to age before flushing |
30000 |
|
6 - Time for non-data (dir, bitmap, etc) buffers to age before flushing |
5000 |
Next, the following network parameters were changed:
# echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
# echo 0 > /proc/sys/net/ipv4/tcp_sack
# echo 0 > /proc/sys/net/ipv4/tcp_timestamps
When mounting the RAID partition, the noatime option was used to disable updating of access time for each file.
Lastly, the software used to provide the Windows share to the drive, Samba, was re-compiled with mmap enabled (/usr/src/samba-2.0.5/source/configure –with-mmap). And the following was added to the Samba configuration file:
read raw = noread prediction = true
level2 oplocks = true
While not trivial, the tasks can be easily accomplished by an experienced system administrator.
Tuning parameters for SCO Unixware 7.1.1
Tuning SCO consisted of making a few adjustments to network and file system parameters. The following file system parameters were configured using the idtune command per SCO's recommendation. Modifying these values also required rebuilding the OS kernel.
|
Parameter Name |
Value |
|
SFSZLIM |
0x7FFFFFFF |
|
HFSZLIM |
0x7FFFFFFF |
|
NBUF |
3000 |
|
NHBUF |
1024 |
|
NPBUF |
64 |
|
NC_HASH_SIZE |
512 |
|
BUFHWM |
158720 |
The following network parameters were modified using inconfig command:
|
Parameter Name |
Value |
|
tcp_do_rfc1323 |
0 |
|
ip_perform_pmtu |
0 |
|
tcp_fast_open |
1 |
Lastly, the RAID partition was configured with the largefiles option to handle files larger than 1Gb.
Tuning parameters for Novell NetWare 5.1
Tuning Novell NetWare was the most straightforward. It involved modifying only four parameters. First, for the file system, the following parameters were modified:
set immediate purge of deleted files = onset maximum files locks per connection = 500
set system threshold = 0
Next, to enhance network performance, the following was added to the autoexec.ncf file:
set tcp disable nagles algorithm = on
Since Novell has been dedicated to network file services for years, it follows that tweaking would be minimal as compared to the other general-purpose operating systems.
Tuning parameters for Microsoft Windows 2000
Tuning Microsoft Windows 2000 was fairly involved. Tuning included file system, network and some memory management modifications.
First, the file system modifications included creating the NTFS Raid partition with the allocation unit set to 16K using the disk manager. Then, the size of the volume log was changed to 64K via the following command:
chkdsk <drive letter>: /l:65536
Next, the network was tuned using the intfilter utility (available via ftp from Microsoft). The utility allows you to assign interrupts to a particular CPU. Here it was used to distribute the interrupts for the 4 network interface cards. Each CPU was assigned 2 cards. Furthermore, the following parameters were changed for each individual network card:
Increase Receive Buffers to 999Increase Coalesce Buffers to 32
Increase Transmit Control Blocks to 64
Lastly, modifications were made to the registry. First, tweaking the memory managemnt by modifying the following:
\registry\machine\system\currentcontrolset\ control\session manager\memory management
PagedPoolSize = REG_DWORD 192000000
Then, the following registry entries were created/modified to enhance network performance:
\registry\machine\system\currentcontrolset\ services\tcpip\Parameters
TcpWindowSize = REG_DWORD 65535
\registry\machine\system\currentcontrolset\ services\tcpip\Parameters
MaxHashTableSize = REG_DWORD 65536
\registry\machine\system\currentcontrolset\ services\tcpip\Parameters
NumTcbTablePartitions = REG_DWORD 8
Registry hacking ranks right up there with kernel modifications, neither for the inexperienced system administrator.
RELATED LINKS
