попробуйте добавить в конфиг это-должно помочь
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
либо вариант №2
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no
Это уже добавлено в конфиг сервера. Но повторю, что проблема не в сервере. Потому что когда в качестве клиента выступает Windows, то проблемы нет и скорость соответствует пропускной способности сети.
Кстати, экспериментальным путём выявил, что для моей конфигурации лучше SO_RCVBUF=65536 SO_SNDBUF=65536.
Пользователь решил продолжить мысль 19 Июля 2009, 22:02:49:
Решил обойти проблему - поставил NFS. Но оказалось не всё так просто. Проблем со скоростью нет - 100 МБайт/с (там нет таких ограничений на rsize), но проблема с доступом к файловой сисеме Fuse (я использую mhddfs). Везде засада.
Пользователь решил продолжить мысль 20 Июля 2009, 01:59:32:
Полезный документ Linux CIFS Client Guide:
http://ppp.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
Пользователь решил продолжить мысль 20 Июля 2009, 11:56:43:
Performance Considerations
Server speed, server disk speed and network speed can constrain the overall performance of a cifs
mount, but in some cases, client client configuration settings can be changed to increase performance:
1) size of file write (wsize). The Linux CIFS client usually sends 56K writes (14 pages) and is
limited to 56K maximum unless mounted forcedirectio.
2) size of file read (rsize). The Linux CIFS client usually sends 16K reads (4 pages). Since CIFS
large network buffers are about 16K in size by default, increasing the rsize would have little
effect unless the setting of module load parameter CIFSMaxBufSize (via insmod) also is
increased.
3) maximum number of simultaneous requests to a particular server. Default is 50. It is
configured via module load parameter (via insmod) “cifs_max_pending”
4) minumum number of small and large network buffers in the cifs buffer pool. These are
configured via module load parameters cifs_min_small and cifs_min_rcv respectively.
Although increasing these will reduce available memory, they can increase performance for
some workloads in which large numbers of simultaneous requests are made to the same server
from different processes (by reducing the number of memory allocations).
5) caching on client (forcedirectio). The default is to attempt to cache ie try to request oplock on
files opened by the client (forcedirectio is off). Foredirectio also can indirectly alter the
network read and write size, since i/o will now match what was requested by the application, as
readahead and writebehind is not being performed by the page cache when forcedirectio is
enabled for a mount.
6) Sending byte range lock requests. Sending byte range lock requests can be disabled (only
enforced locally on the client) by the mount parameter “nobrl”
In addition, whether or not cifs packet signing is negotiated, and whether or not the Linux Extensions
to CIFS (POSIX CIFS Extensions) are negotiated, can affect performance.
The Linux CIFS client exports various statistics to assist in tuning. See /proc/fs/cifs/Stats and
/proc/fs/cifs/DebugData. Additional timing information can be logged to dmesg (the kernel debug
message log) by setting the “CIFS_TIMER” flag (“echo 4 > /proc/fs/cifs/cifsFYI”).
Пользователь решил продолжить мысль 20 Июля 2009, 14:46:45:
Пробуем изменить параметр CIFSMaxBufSize. Я раньше ни разу этого не делал, поэтому будем разбираться...
Так, команда
modinfo /lib/modules/2.6.28-14-generic/kernel/fs/cifs/cifs.ko
говорит нам:
parm: CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (int)
Т.е. такой модуль действительно есть и в нём есть этот параметр. Теперь его надо изменить...
Пользователь решил продолжить мысль 20 Июля 2009, 18:13:26:
Воспользовавшись этим руководством
http://www.linuxplanet.org/blogs/?cat=713 создал файл options.conf в /etc/modprobe.d со следующей строкой:
options cifs CIFSMaxBufSize=130048
И скорость чтения увеличилась до 60-70 МБайт/с! Похоже, что работает.
Естественно, что нужно дополнительно задать параметр rsize в fstab. Его нужно подобрать, чтобы получить максимальную скорость.