Performance Tuning Challenge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Can anyone give me some advice on a tuning issue that surely must involve 
RAID settings? 

I am using a Linux system (P4 3.06 Ghz, 1 GB RAM, Mandrake 9.2, mandrake 
enterprise kernel 2.4.22-21 ) as a file server for 6-to-8 Windows XP video editing 
systems. All shared video and audio files are stored on two RAID5 arrays each 
built from 5 external firewire drives (connected to 5 true channels of 
firewire controllers). I am getting excellent read/write performance from the 
arrays. However, I'm trying to maximize performance of the system and I realize that 
requires balancing a number of tunable settings that all must interact with 
each other (virtual memory, RAID, tcp/ip, samba, xfs filesystem etc.). 

Please keep in mind that I have a limited number of users who are mostly 
trying to access portions of very large video and audio files. For instance, if 
the average user is looking at a string of video and audio clips that are around 
5 seconds each, each editing machine is asking for 17 MBs of continuous video 
and 1 MB of continuous audio for clip 1, and then the same for each 
subsequent clip. If the video were edited with "quick cuts" of 1 sec duration each, 
that would be 3.5 MBs of continuous video data and 150K of audio data for each 
clip. Keep in mind that the data can be spread out all over the RAID arrays -- 
so the disk heads have to move around constantly to get the data that each user 
needs (Of course, sometimes users are just watching long continuous video 
clips that are many minutes long -- which is less demanding on the system). 

My challenge is to tune the system so that the video and audio files required 
by each user arrive at each users machine when needed and so that no frames 
are skipped. When 6 editing machines (that's all I own) are operating 
simultaneously, video and audio plays great at normal speed on all machines. When some 
machines try to play video at 2x or 3x speed (which doubles or triples the 
speed at which data must be read from the RAID arrays), some skipping occurs. I 
have found, however, that by tweaking my virtual memory settings to 128 
min-readahead and 512 max-readahead (up from the Mandrake defaults of 3 and 31) that 
I can allow several machines to play video at 2x or 3x speed while the others 
play at normal speed and nobody gets any skipping. I also had to play around 
with the bdflush settings to get peak performance when writing video data to 
the arrays. 

I have no idea whether the virtual memory readahead settings that I have made 
make sense, and whether they are interacting in an ideal manner with the RAID 
and filesystem settings. 

It seems that it's possible to specify the amount of readahead for the RAID 
arrays. Regarding this, my questions are: 

-- Is it possible to set the RAID readahead after creating the arrays? And if 
so, how? When I run "cat /proc/mdstat" I see that read_ahead is set to 1024 
sectors. Can I -- and should I -- change that? In the kernel "info logs" I see 
that each time my arrays start up the "max total readahead window" is "set to 
2048k" and although the arrays are made up of 5 disks the log says "4 
data-disks, max readahead per data-disk: 512k". 

-- Can anybody tell me, given the kind of video and audio data my client 
machines are requesting, how to go about balancing the following variables? There 
must be a logic to setting these things so that they all work in harmony: 

-- xfs filesystem. Block size is currently set to 4096 the maximum allowed in 
Linux. That can't be changed now without losing exiting data. 
-- RAID stripe size = 128 currently. That can't be changed now without losing 
existing data
-- RAID readahead... Can that be changed?
-- virtual memory readahead
-- TCP/IP buffers... rmem_default, rmem_max, wmem_defaul, wmem_max (currently 
set to 327675 and 655350 respectively) and net.ipv4.tcp_wmem, 
ntet.ipv4.tcp_rmem 
-- Samba SO_RCVBUF SO_SNDBUF (currently set to 524280 each)
-- Samba read size and max smit (also set to 524280)
-- Intel Gigabit Ethernet card settings:  RxDescriptors (currently 1024) 
TxDescriptors (currently 4096)
-- anything else that interacts with all this. 

Also, does anybody know how to check to see if the 8MB Cache that each of my 
firewire drives has is being used for Read and Write Caching? Surely the use 
of this cache memory can greatly affect performance. 

This is like a wonderful puzzle. Changes do seem to make a big difference. 
All ideas would be appreciated. Please keep in mind that I'm not a Linux expert. 
I'm just a TV producer who knows a bit too much for his own good! So, please 
keep your replies as "untechnical" as possible. Thanks.

Andy Liebman
Resolute Films
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux