Игры на сервере: загрузка по сети

  • user warning: Table './c6internetclub/sessions' is marked as crashed and should be repaired query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1537375405 AND uid = 0 in /mnt/www/internet-club.info/web/includes/session.inc on line 157.
  • user warning: Table './c6internetclub/sessions' is marked as crashed and should be repaired query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1537375405 AND s.uid > 0 in /mnt/www/internet-club.info/web/modules/user/user.module on line 808.

Места на жестком диске никогда не бывает много. В компьютерном клубе этот недостаток места умножается на количество компьютеров. Поэтому я использую отличный способ экономии места на диске пользовательских компьютеров: все игры вместо хранения на локальном диске компьютера складируются на сервере и запускаются с сервера. Какие преймущества это дает?

+ сюрприз сюрприз... экономия места! Фактически, от компьютера нужен только диск C: с операционной системой.
+ удобство администрирования: для добавления новой игры или для обновления существующей на все компьютеры достаточно закинуть ее копию на сервер и подготовить к работе
+ удобство мгновенного исчезновения игр со всех компьютеров в случае тревоги

К мысли запускать игры с сервера я пришел много лет назад, когда в интернет клубе я ставил новинки на парочку компьютеров, а на других уже требовали "такую же игру". На компьютерах стояли XP-шки. Диск с играми был расшарен, но права на запись были закрыты. Чтоб не заморачиваться с копированием игры на компьютер нетерпеливого клиента я делал просто: заходил на компьютер с расшареной по сети игрой \\192.168.x.x\games\ в директорию новой игры и просто запускал ее оттуда. Многие игры таким образом отлично работали. Это подтолкнуло меня к мысли собрать их на один компьютер, который всегда был бы включен.

Большинство проблем такой схемы было связано с невозможностью записи в директорию игры. При разработке виндовых игр раньше вообще не учитывалось, что винда - система многопользовательская. Поэтому все рабочие файлы должны были записываться прямо в директорию с игрой. Сейчас уже в новых играх эта проблема почти сошла на нет. Намного реже встречаются игры, которые пишут временные файлы и сейвы прямо в свою директорию. При невозможности записать необходимое, игра как правило не работала или вылетала в определенный момент. Получив доступ на запись в сетевую директории с игрой, как правило, проблемы с запуском исчезали. Я складывал полученые в результате экспериментов занания в копилку на пути к своей цели - сервер, с которого будут запускаться игры. Так на моем сервере пополнялась огромнейшая коллекция игр, которые работали без проблем. Остальные проблемы по немногу решались.

Самой интересной задачей при запуске игр с сервера был запуск игр, требующих разрешение на запись. Оставлять полный доступ к играм нельзя так как появлялась угроза заражения исполняемых файлов по сети с любого зараженного компьютера зала. Да и любой дурак мог удалить всю игру - случайно или намеренно. Уже много лет назад я придумал следующий финт ушами с помощью своего юниксового сервера. Залив свежую игру на сервак я давал полный RW доступ и запускал игру. После этого следующей командой я находил последние измененные файлы и директории:
ls -lRa | grep сегодняшнее число

На всю директорию с игрой я рекурсивно убирал права на запись (chown -R root ), за исключением найденых файлов (chown nobody ). Как правило, EXE файлов среди них не было и проблема с вирусами решалась полностью. А удалить директорию, где почти все внутри закрыто на запись тоже становилось проблематичной задачей для обычного посетителя. Но не исключено! Со временем я разработал интереснейшую систему которая позволяет без подобной возьни запускать игры с сервера, просто записав туда и не беспокоиться насчет вирусов и за нарушение работоспособности. Но об этом я пока расказывать не буду.

Следующая категория игр, которые не захотели запускаться с сервера были игры, которые по какой то причине не принимали сетевой путь формата \\192.168.x.x\games\ . Такие игры отлично как правило работают если замапить сетевой путь на букву диска через меню файлового браузера "Map network drive". В компьютере появлялся новый диск E: который и являлся содержимым сетевой директории \\192.168.x.x\games\ . С этого диска почти все игры отлично идут. В BAT файле это можно сделать следущими командой:
; очистить букву диска, если она уже использовалась для мапинга сетевого диска
echo y | net use z: /delete
;подключить к букве Z путь \\server\games
net use z: \\server\games

Некоторые игры после установки требуют наличия диска с игрой в сидироме. Как правило в интернет клубе компьютеры даже не имеют сидирома. Чтоб отучить игру проверять оригинальный диск нужно найти nocd-патч. Они легко находятся на сайте GameCopyWorld, но соваться на этот сайт советую только тем кто знает что делает: пока скачаете nocd ваш компьютер нашпигуют траянами и вирусами по самое нехочу.

Если же nocd не нашлось для новой игры, можно оставить подмонтированый образ диска через программу Deamon Tools. Эта программа создает в системе виртуальный сидиром в котором якобы находится диск с игрой. Образ диска можно разместить опять же на сервере всего в одном экземпляре. Чтоб клиентам вручную не приходилось лишний раз кликать пишется BAT файл, через который запускается игра предварительно подмонтировав образ диска следующей командой:
"C:\Program Files\DAEMON Tools Lite\daemon.exe" -mount 0,\\server\games\rld-fi07.iso

Скептики услышав о такой затее, как запуск игр с сервера бросаются рассуждать как все будет тормозить и доказывать недостатки этой схемы. Пока кто то разводит демагогию, я в это время уже много лет наслаждаюсь прекрасной работоспособностью такой схемы. Как только кто то приводит "доказательства" что все должно жутко тормозить, я слышу только доказательства некомпетентности оратора. Ведь игра активно считывается с жесткого диска только в процессе загрузки. Все остальное время запущеная игра имеет все что нужно в памяти клиентского компьютера и лишь изредка обращается за новыми порциями данных. Так с одного сервера может играть целый компьютерный зал и никаких тормозов не будет. Кроме того, загрузка игры не сводится только к чтению с диска, но и включает распаковывку данных, подготовку текстур, звука, видео, размещение данных в памяти. В принципе даже стамегабитной сети хватает чтоб загружать по сети с сервера не очень навороченые игры. А вот гигабита будет с лихвой хватать для огромного компьютерного зала.

Математика тут простая. Возьмем в качестве сервера обычный компьютер из зала с самым обычным жестким диском. Средний жесткий диск дает скорость чтения около 80-100 мегабайт в секунду. Теоретический предел скорости гигабитной сети считается так:
1000 мегабит / 8 бит в байте = 125 мегабайт в секунду.

Тоесть при скорости 100 мегабайт в секунду игру размером в 1 гиг можно полностью скачать за 10 секунд. Это в теории. На практике же всплывает множество "НО". Самое первое "НО" это операционная система. Практика очень отличается от теории в зависимости от эффективности операционной системы. Можно было бы кучу игр закинуть на виндовый сервер, но тогда действительно игры будут грузиться с черепашьей скоростью. Поэтому лучшей операционной системой под наши цели на мой взгляд является Linux или FreeBSD с установленым Samba демоном. Обе системы себя показали очень стабильно и дают неплохую скорость. Все остальное упирается в аппаратные ограничения.

Две аппаратные подсистемы которые будут грузиться на нашем сервере с играми являются дисковая и сетевая. Именно на эти системы нужно делать упор при настройке сервера. Кроме того, не помешает лишняя память для кэширования информации. Чем больше памяти - тем лучше. Но для начала хватает и 1-2 гигов. Так, например, Counter-Strike имея размер в один гиг будучи запущеным с одного клиентского компьютера помещается полностью в кэш и когда файлы этой игры запросит другой клиент, сервер даже не будет обращаться к диску. Таким образом, даже если 50 компьютеров одновременно запустят Counter-Strike, наш сервер легко справится с этим и легко даст запустить ее всем компьютерам. Об этом я говорю не теоретизируя, а имея за плечами огромный опыт. Так, у меня на чемпионате с одного сервера работало одновременно около 80 бездисковых компьютеров. Об этом чемпионате я расказывал тут: http://www.newmoldova.com/node/489 . Это конечно уже серьезный сервер, а не рабочая станция. Но и запускались с него не только игры, а так же операционная система для бездисковых станций клуба.

Для улучшения производительности сетевой подсистемы достаточно установить гигабитную серверную сетевую плату из категории Intel Server Adapter. Стоят такие платы от 100$. Эта плата сниает нагрузку с центрального процессора и самостоятельно шустро обрабатывает приходящий поток пакетов. Такие платы стоят своих денег! Даже если все клиентские компьютеры вашей сети подключены на 100 мбит, сервер к свитчу очень желательно подключить гигбитом. Иначе это будет узким горлышком при одновременном запуске игр со множества компьютеров.

Для увеличения производительности дисковой подсистемы используйте RAID массивы из дисков. Объединив несколько жестких дисков в массив можно увеличить скорость чтения/записи в разы. Кроме того с помощью RAID уровня 5 или 10 можно увеличить надежность сохранности информации. Таким образом, при выходе из строя любого одного жесткого диска массива вся информация все равно будет в сохранности. Однако увеличение надежности сказывается на производительности и увеличивает нагрузку на процессор. Поэтому для нашей задачи куда лучше использовать RAID уровня 0 в комбинации с регулярными бэкапами коллекции игр. RAID-0 из всех уровней RAID является самым высокоскоростным. Хотя и самым ненадежным в плане сохранности информации: при выходе из строя любого из жестких дисков массива вся информация будет потеряна.

Не стоит пугаться если вам неизвестно что такое RAID или вы наслышаны о RAID-контроллерах как об очень дорогих игрушках. Для использования RAID не обязательно что то покупать кроме самих жестких дисков. Подключив несколько жестких дисков к серверу используйте программы для настройки софтверного RAID массива. Для линукса это программа mdadm. Для фрибзд это программа gstripe. Вы будете удивлены насколько увеличивается производительность дисковой подсистемы при использовании даже софтверного рейда.

Если же появится желание и деньги идти дальше для улучшения производительности, вполне можно приообрести "взрослый" сервер с аппаратным RAID контроллером. Но еще раз напоминаю: это не обязательно и для большинства интернет клубов тратить 3-5 килобаксов на такой сервер даже является излишеством. Используйте обычный компьютер и будет вам счастье!

Еще один интересный факт по поводу производительности: использование в линуксе юниксовой файловой системы NFS заместо виндового сетевого окружения (протокол SMB) повышает скорость загрузки игр очень существено. Это позволило мне создать бездисковый интернет клуб, о котором я расказывал вот тут: http://internet-club.info/ru/node/303

Для удобства на рабочем столе клиентского компьютера размещается ярлычек, ведущий на серверную директорию \\server\ярлыки-игр . В нее собираем ярлычки на все игры, которые есть на сервере. Таким образом, подкинув свежий ярлычек в эту дирку он становится доступным на всех компьютерах.

Недостатки запуска игр по сети с сервера:
- немного медленая загрузка по сравнению с локальным диском. Не на порядок. Лишь еле заметная небольшая разница.
- проблемы с RW-доступом. Я их решил с помощью перехода на линукс и еще несколькими интересными схемами работы, которые являются моим ноу-хау. Но это тема для отдельной статьи.

не видны exeшники

Ребята, такая проблема, поднял линукс сервер, положил игры, оболочка на клиентских ПК LockWin, локвин загружается раньше чем монтируется сетевой диск, потому ярлыки в локвине не видны, подскажите решение проблемы...

Отличная

Отличная статья. Хотелось бы узнать какие параметры железа подойдут для серверного компьютера и клиентских. Зал планирую сделать из 16 игровых и 10 интернет компов Заранее спасибо

http://optimization.hardlinux

http://optimization.hardlinux.ru/?page_id=997 попробовал сжать папку /usr в squashfs, программы стали запускаться чуть быстрее, но если использовать по сети то наверно будет заметный прирост скорости за счет сжатия и оптимизации файловой системы

Здраствуйте,

Здраствуйте, имею небольшой инет клуб, есть желание запускать игры с сервера, часть игр запускается, но совсем преметивных, при попытке запустить кс 1.6 выскакивает ошибка памать не можит быть read, fifa 2010 пишет что игра установлена с ошибками,все кабеля заходят в свитч, включая модем и потом раздаются по машинам, доступ я открыл фаерволы повыключал, ничего не выходит, подскажите пожалуста как мне это лучше сделать, заранее благодарен.

Шара с CS должна

Шара с CS должна быть доступна на запись обязательно. Во время игры CS пишет в некоторые файлы.

многие игры не

многие игры не работают без установки, то есть нельзя просто скопировать папку с установленной игрой на другой компьютер и там запустить, нужно запускать оригинальный инсталятор, кроме копирования файлов игры он делает что то еще, без чего игра не работает
предположим у нас есть сетевой диск z: на каждом компьютере, он же \\192.168.x.x\games\ на сервере, на каждом компьютере придется устанавливать игры оригинальным инсталятором в папку z:\?

игра Generals Zero Hour,

игра Generals Zero Hour, например, во время установки создает файл-ключ с информацией о серийнике и железе и кладет его в папку с игрой, если использовать одну папку с игрой на нескольких компьютерах то, во-первых, сработает защита от копирования по железному ключу и игра будет запускаться только на последнем установившем игру в общую папку компе, во-вторых после запуска в сети будет только один ключ для сетевой игры

да, это одна из

да, это одна из тех редких игр которую не получилось побороть на винде

щас зазнаюсь))))

нууу ребяткии ))) а я её со второго раза поборол для работы под ХР на последних офф патчах и для игры по сети в своих клубах ))) что же это такое делается - игра то мировая ))))) ухх супероружейный генерел дает жару на лане ))))

у тебя генералы

у тебя генералы запускаются из одной сетевой папки на всех компах или ты что то другое поборол?

папка у всех

папка у всех своя локальная )) а тут разговор про одну общую только?

А на линукс она

А на линукс она не работает по сети ))

пробовал

пробовал вынести некоторые тяжелые игры на сетевой диск (линукс+самба), сеть частично 100мбит часть 1000, игры - lineage2,wow,cs16

lineage2 на 100мбит оказалась неиграбельной, локации прогружаются сильно дольше чем с родного диска, в игре это выглядит так - ваш герой телепортируется и игрок ждет скажем 20 секунд пока прогрузится окружающий мир, за это время его успевают убить враги и даже монстры-боты, или просто герой бежит по полю и вдруг замирает секунд на 5 в ожидании прогрузки мира, если герой стоит на пересечении миров и бьет монстра то может застыть прямо во время битвы и в результате помереть от лап монстров
на 1000мбит все работает раза в 3 быстрее но все равно сильно заметно медленнее чем с родного диска, я бы сравнил это с увеличением пинга в кс16 в несколько раз - приличные игроки сразу уходят туда где родной диск

с wow ситуация похожа на lineage но получше

cs16 загружается несколько дольше и после загрузки работает нормально, но весит игра всего 1гб, смысла экономить на ней нету

Какая сетевуха

Какая сетевуха и сколько памяти на сервере?

pci гигабитная

pci гигабитная 04:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
1гб памяти
скорость чтения с диска 50мбвс (копирование большого файла в /dev/null), скорость отдачи разных реальных файлов в сеть в несколько потоков 30-40мбайт

100мбитная сеть для л2 и вов явно не годится, обычный комп в файловые серверы видимо тоже

Тут вопрос даже

Тут вопрос даже не в 100 мегабитах, а в тормознутости чипа. Замени ее на фирменную серверную 3COM или Intel пусть даже 100 мегабит и почувствуешь разницу. А еще лучше Intel 1000 GT Desktop Adapter. У меня на большинстве серверов такая стоит. Стоит 40$. Дает отличный гигабит.

Скорость винта тоже дохленькая. Вот что дает у меня обычный САТА винт Seagate 250Gb на обычной материнке:
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 260 MB in 3.02 seconds = 86.20 MB/sec

А вот это дает софтовый рейд-5 построеный через mdadm на генте собраный из шести таких же старых винтов что я привел выше. Материнка обычная десктопная, проц двухъядерный.
# hdparm -t /dev/md0
/dev/md0:
Timing buffered disk reads: 316 MB in 3.05 seconds = 103.67 MB/sec

К сожалению сервер сейчас под нагрузкой и показать что дает не загруженый не могу. По памяти процентов на семьдесят он давал больше этот рейд.

ненадо так софтверный рейд в линуксе опускать...

ненадо так софтверный рейд в линуксе опускать - я на своей домашней тачке на 945 интеловом чипсете поднимал рейд-0 из двух самсунговских 160к которые после нескольких лет износа стали давать скорость по 75 мб/с, так этот массив дал мне с них 150 мб/с
+ вы неправильно замеряли скорость, т.к. mdadm создает раздел из разделов и в таком случае скорость зависит и от файловой системы, вы лучше попробуйте через dd под watch'эм начать писать в md* и посматрите какая будет скорость
а и кстати тогда когда у меня был этот рейд у меня стоял целерон 3.06 ггц 512к кеша на ядре cedar mill

приношу извинения

приношу извинения, недочитал последнюю строчку в посте, уже второй день с температурой сижу и головной болью, вот и глючу...

если

если максимальная скорость сетевого диска 120мбвс(ограничение 1гб сети), скорость локального диска 100мбвс, и 6 человек в одной группе играют в л2, то при загрузке/перемещениях у каждого из них будет скорость 120/6=20мбвс - в 5 раз меньше чем с локальным диском

даже если игроков всего двое скорость падает на 40%, почти в 2 раза

Неправильная

Неправильная математика для игры. Если сливать фильм или игру с компа на комп, то будет загружен весь канал. Если фильм смотреть или запускать игру, то весь доступный канал не нужен. Для того чтоб в этом убедиться стоит поглядеть на индикатор обращения к диску на компе во время игры. Обычно он лишь изредка помигивает. А если все компы в зале запустят одну игру одновременно, то она считается с винта лишь один раз, а раздаваться будет из кэша (при условии что памяти на сервере больше чем объем игры). Я проверял это чемпионатах, когда 40 компьютеров запускали одновременно Counter-Strike. Разницы нет никакой, что один комп, что 40 запустили.

замерил

замерил сколько байт потребляют кс16 и л2

кс16 до запуска
RX bytes:2731671249 (2.7 GB) TX bytes:1707020022 (1.7 GB)

в игре
RX bytes:2741163631 (2.7 GB) TX bytes:1888860838 (1.8 GB)
=173мб и во время игры не подгружается

если запустить 40 сразу то при идеальной скорости отдачи в 120мб 60 секунд только данные передаваться будут, то есть не может быть так что разницы нет между 1 и 40

л2 до запуска
RX bytes:2712654851 (2.7 GB) TX bytes:1151950845 (1.1 GB)

логин
RX bytes:2719052789 (2.7 GB) TX bytes:1398678583 (1.3 GB)

зашел в мир в родную деревню
RX bytes:2724553257 (2.7 GB) TX bytes:1530094249 (1.5 GB)

телепортировался в ближайший город
RX bytes:2728690142 (2.7 GB) TX bytes:1645758626 (1.6 GB)

телепортировался в ближайшую зону и убил пару кроликов
RX bytes:2730532484 (2.7 GB) TX bytes:1700349887 (1.7 GB)
=522мб и во время игры подгружается еще и скорость подгрузки важна

Можно

Можно смоделировать ситуацию когда 40 компов одновременно на счет раз-два-три кликнут и запустят игру. Действительно будет тормознее. Но на практике все 40 компов запускают игру с огромными интервалами. Один в носу ковыряется, другой докуривает, третий по телефону говорит. На практике разница не чувствуется! Теоретизировать можно сколько угодно. Я говорю о том что у меня это работает и даже довольно комфортно. Еще 40 висят на отдельном свитче на отдельной сетевухе сервера. Поэтому такая схема хорошо масштабируется.

Raid & gigabit

Все надо параллелить. На хороших (но не серверных) сата дисках софтрейд5 дает 350-400 мегабайт чтение (4 диска). Сеть параллелится на нужное количество сегментов (каждый сегмент на отдельном свитче). В лабораторных условиях (учитывая системный кеш дисков) я получал честных 4 гигабита выхода с одного сервера, на 4 сетевухах. В условиях игр (чтение большого количества файлов и распаковки) один клиент кушает обычно не более 300-500 мегабит, поэтому наш лабораторный сервер элементарно справится с 10-15 совершенно одновременно запускаемых играх на клиентах.

Отдельная тема для обсуждения - динамическое использование серийников официальных игр. Под винду решения есть, а сталкивался ли кто-нибудь с этим под вайном. На примере стим кафе хотя-бы?

распараллелива

распараллеливание не поможет в случае с л2. 2 человека придут и сядут рядом (а так и будет), попадут в один сегмент. 2 человека в л2 это уже минус 40% по сравнению с локальным диском, если их будет больше они вам мозг съедят

Компы нужно

Компы нужно параллелить в шахматном порядке. Тогда рядомсидящие клиенты будут грузиться с разных сетевух. Хороший Quad-гигабит стоит около 400$.

А в общем и целом, загрузка игр с рейда по 1 гигабиту происходит раза в полтора быстрей (на глаз сверяли l4d). Речь идет правда про один компьютер. Причина - огромное количество файлов и более быстрый доступ к ним, когда диски в рейде.

Если в клуб

Да не надо никаких шахматных порядков. Есть такая фича на управляемых свитчах как link aggregation (еще называют port trunking... стандарт IEEE 802.3ad), которая позволяет подключить свитч к множеству сетевух на сервере ( или к другому свитчу задействуя несколько портов). Поддерживается как в Linux, так и в FreeBSD. Гуглится по словам "Агрегация каналов". Если в клуб поставить четырехпортовую сетевуху и подключить свитч, который будет иметь подключение 4 гигабита с сервером, это будет вынос мозга!
+ raid
+ кэширование в памяти сервера
+ вообще все процессы на серверном железе проходят гораздо быстрее
+ sas диски (или вообще SSD)
+ высокоскоростной протокол NFS через UDP

В итоге любая игра вроде L2 или WoW будет загружена как только пользователь захочет нажать на иконку :)

Все почти так,

Все почти так, но:

1) управляемые свитчи - довольно большая переплата, я считаю, лучше взять более качественные бренды, за меньшие деньги и сделать распределение на уровне интерфейсов и айпи-подсетей (разумеется, не теряя при этом возможности каждого клиентского компа общаться по сети с другим); кроме того, свитчей скорей всего несколько (например в вашем клубе минимум нужно 2 свитча на 48 портов каждый) - а это еще больше удорожит сеть (нужно связывать свитчи высокоскоростным кабелем)

2) nfs over udp нужно очень тщательно тестировать, я сталкивался с тем, что несовпадения в скоростях интерфейсов (1гб сервер и 100мб клиент) приводили к жутким лагам именно по udp !

1. сейчас у меня

1. сейчас у меня неуправляемые китайские tplink. Работают ниче.
2. В сети только гигабитное оборудование, так что все бегает на ура. С этим проблем не возникает. Бездисковые современные станции слишком жестоко пускать ччерез 100 мегабит.

немного бенчмарков nfs v4

Условия: time ls -lR ~440 тысяч файлов, фс ext4, все уже есть в кеше и обращений к диску нет:

Локально:

1) локально последовательно 3.5 сек
2) локально в 30 потоков 0.9 сек

По NFS v4 (опции монтирования дефолтные, сеть гигабит, клиент и сервер примерно одинаковые, ядра самые свежие на текущим момент):

1) tcp 1 поток ~30 сек
2) udp 1 поток ~28.5 сек
3) tcp 30 потоков ~3.9 сек
4) udp 30 потоков ~3.8 сек

Скорость чтения файлов - полный гигабит в обоих случаях.
Разница между tcp и udp - совершенно незначительная.

Вывод первый: работа с большим количеством файлов по NFS, даже при загрузке из кеша, получается медленей, чем из локального кеша, от 4 до 10 раз.

Вывод второй: udp/tcp для nfs имеют примерно одинаковую скорость, то есть заморачиваться с выбором не стоит.

Попробуй через

Попробуй через nfsv3.
Я отказался от v4 по той причине, что тест через dd копирование огромного файла выходил быстрее, а на практике все программы загружались на порядок дольше. Невозможно пользоваться. На v3 так и работают все бездисковые станции.

Как запустить ls -lR в 30 потоков?

еще раз перепроверили v3/v4

Чуть усложнил задачу (100 потоков, всего 1.4 миллиона файлов прошло через ls -lR):

локально ~3.7 секунды
v4 tcp/udp 8.3-8.5 секунд
v3 tcp/udp 10.2-10.7 секунд

Ради интереса, закрутили nfs до сервера через туннель с lzo-сжатием, результат ls -lR на v4 получился около 11 секунд, а скорость считывания файла, состоящего из 1000 кусков одинакового файла размером 1 мегабайт упала до 20 мег в секунду. То есть компрессия в этих делах не помогает вообще никак.

v4 по моим

v4 по моим тестам работает значительно быстрей (процентов на 30%, чем старый v3, но возможно дело в настройках)

30 потоков очень просто:
for i in `seq 1 30`; do ls -lR ... >/dev/null & done; time wait

вопрос только в том, что нужно подмонтировать 30 разных mountpoints и делать ls -lR на каждый отдельно, иначе первый же ls -lR загонит все в кеш и результаты будут необъективными; также перед каждым тестом надо размонтировать и монтировать все снова

в понедельник будем пробовать интересную штуку - preload - чтобы пока юзер авторизировался на компе, в это время уже подгружались все нужные файлы кед, а также файлы популярных приложений (ну хотя-бы броузеров, а также профайлов броузеров). эффект должен быть поразительным :-)

конкретные бенчмарки (старт кед, старт броузеров, старт некоторых игр) будем делать когда уже проведем оптимизацию, затем обязательно закину сюда бенчмарки в разных условиях

кстати точно известно, что кеды на момент старта кушают около 350мб сетевого трафика, не включая файлы базы akonadi, которые мы по сети не гоняем

для сравнения - гном кушал около 150мб и грузился за пару секунд (но переход дистров на гном3 подсунул конкретные палки в колеса, мы потеряли около недели времени и перешли на кеды)

Попробую еще

Попробую еще разок v4 как то, возможно что то не доглядел. Перелопатив все настройки вернулся на v3 в свое время. Сейчас новые ядра вышли и есть смысл еще раз попробовать.

Идея с прелоадом афигенная, но каким образом его организовывать собираетесь? Как понимаю прелоад в память сервера?

Кеды когда стартуют около полгига траффика сжырают чтоб создать временные файлы для кэширования в /ur/tmp. Если эту дирку очистить то при следующем старте опять создадут кэш. Если дирку сохранить, то в следующий раз стартуют намного быстрее и уже не так много гоняют файлов.

кеды

Прелоад прямо сейчас пробуем настроить. Суть в том, чтобы пока юзер логинится, прелоад будет считывать с сервера нужные для запуска кед и броузера файлы (разумеется, в системный кеш клиента).

У 4-х кед основные временные файлы - это mysql-база akonadi (~150 мегов создается при первом запуске), поэтому akonadi мы размещаем вне сетевой файловой системы.

preload

1) nfs таки в клубе настроен на v3, т.к. v4 по-другому работает с owners файлов, что не совсем подходит (хотя на синтетических тестах v4 все-же быстрее)

2) KDE грузится без прелоада примерно за 20 секунд (сколько кстати у вас?)

3) повторная загрузка (рестарт с нуля) - около 9-10 секунд

4) с preload-ом выходит около 15 секунд, то есть выигрыш незначительный

В общем делаем вывод, что лучше настроить компы, чтобы корректно работал sleep (suspend to memory) и экономить время на загрузке системы и на первоначальной загрузке KDE!

Софтина под win

Софтина под win была выложена на форуме Буки (серверная и клиентская часть). Человек который ее заказывал, за свои деньги, сделал владельцам клубов огромный подарок. Интересно кинул ли ему, хоть кто 10 рублей на вебмани. А потом уже Буковцы с его разрешения начали ее использовать в своем паке, который пишется на чистом энтузиазме Александра (Smake -тех. поддержка Буки). Для Valve Cyber Cafe все очень давно решено и под линукс, на том же софте, что и под винду. Для своего клуба заказывали модуль (клиентский). Модуль написали за неделю. Все работает с таким же синтаксисом как и под винду.
/usr/local/wine-ххх/bin/wine LoginsAccountClientU.exe -host "10.1.10.99" -shell "C:/Program_Files/Steam/Steam.exe" -shellargs "-login {0:s} {1:s} -applaunch 1250 -quit" -start "1" -wnd "0"