Страница 1 из 2
Скорость работы с диском
Добавлено: 2014-02-10 19:01:00
icb
Установил Bitrix на сервер FreeBSD. Запустил монитор производительности и получил странные значение на пустом сервере.
Эталон (файловых операций в секунду) 10.000, а я получаю около 5.700
Код проверки довольно простой:
Код: Выделить всё
<?
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$res = array();
$file_name = "test_file.#i#";
$content = "<?\$s='".str_repeat("x", 1024)."';?><?/*".str_repeat("y", 1024)."*/?><?\$r='".str_repeat("z", 1024)."';?>";
for($j = 0; $j < 4; $j++)
{
$N1 = 0;
$N2 = 0;
$s1 = getmicrotime();
for($i = 0; $i < 100; $i++)
{
$fn = str_replace("#i#", $i, $file_name);
}
$e1 = getmicrotime();
$N1 = $e1 - $s1;
$s2 = getmicrotime();
for($i = 0; $i < 100; $i++)
{
//This is one op
$fn = str_replace("#i#", $i, $file_name);
$fh = fopen($fn, "wb");
fwrite($fh, $content);
fclose($fh);
include($fn);
unlink($fn);
}
$e2 = getmicrotime();
$N2 = $e2 - $s2;
if($N2 > $N1)
$res[] = 100 / ($N2 - $N1);
}
echo 'fs = ' . array_sum($res)/doubleval(count($res)) . '<br>';
?>
Почему могут получаться такие маленькие значения?
Попробовал увеличить количество операций, смотрю при этом gstat и не вижу нагрузку на HDD.
Получается PHP не использует HDD на полную мощность?
Re: Скорость работы с диском
Добавлено: 2014-02-17 22:39:32
Alex Keda
получается сам пых тормозит.
попробуйте поиграться с дисковыми кэшами
Re: Скорость работы с диском
Добавлено: 2014-02-18 10:14:08
icb
Очень на это похоже, особенно учитывая нормальную скорость и нагрузку на диск от dd.
Но вот вопрос - что именно тюнить? Неужели у всех PHP нормально грузит диск?
Re: Скорость работы с диском
Добавлено: 2014-02-18 19:32:19
fidaj
php с какими опциями собран?
Re: Скорость работы с диском
Добавлено: 2014-02-19 14:11:10
icb
Код: Выделить всё
OPTIONS_SET= \
CLI \
IPV6 \
MAILHEAD \
FPM \
SUHOSIN
OPTIONS_UNSET= \
CGI
Re: Скорость работы с диском
Добавлено: 2014-02-23 21:18:56
Alex Keda
Код: Выделить всё
bkp0$ php t.php
fs = 7823.8631589473<br>
bkp0$ cd /home/tmp/
bkp0$ mv /tmp/t.php ./
bkp0$ php t.php
fs = 7155.5147381159<br>
bkp0$
первый вариант - tmpfs, второй - UFS2
копеечная разница в скорости грит что затык не в скорости доступа к диску
Re: Скорость работы с диском
Добавлено: 2014-02-24 7:49:49
Neus
Re: Скорость работы с диском
Добавлено: 2014-02-24 7:51:53
Alvares
шойта у меня скачет от 2000 до 8500 на ext4 и reiser3. Причем пофиг, на какой. И там и там результаты разнятся. Это на виртуалке.
Re: Скорость работы с диском
Добавлено: 2014-02-24 13:58:29
icb
Т.е. дело не в диске, а в PHP или FreeBSD?
Что тюнить?
Re: Скорость работы с диском
Добавлено: 2014-02-25 22:51:07
Alex Keda
фиг знает...
натюните чёнить - расскажите
у нас тоже некторые кипятком писаются от этих тестов....
Re: Скорость работы с диском
Добавлено: 2014-02-26 7:07:12
Neus
!есть идея - прогнать эти тесты в Linux-Jail

Re: Скорость работы с диском
Добавлено: 2014-02-27 10:54:10
icb
натюните чёнить - расскажите
Знать бы что тюнить.
Ни в PHP, ни во FreeBSD вроде настроек похожих нет.
у нас тоже некторые кипятком писаются от этих тестов.
Все у кого Битрикс думают что FreeBSD гораздо медленнее Linux

Re: Скорость работы с диском
Добавлено: 2014-02-27 14:44:32
Alvares
Виртуалки на Virtualbox. Заглушены все сервисы, голая система
Код: Выделить всё
% uname -r
9.2-STABLE
% php -v
PHP 5.4.25 (cli) (built: Feb 12 2014 19:18:23)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
% php test.php
fs = 3550.4322506692
А вот Linux:
Код: Выделить всё
gentoo# uname -r
3.10.25-gentoo
gentoo# php -v
PHP 5.5.9-pl0-gentoo (cli) (built: Feb 18 2014 17:44:30)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
gentoo# php test.php
fs = 3627.0783751911 EXT2
fs = 2724.7319906955 EXT4
fs = 2890.7234607040 EXT3
fs = 3063.5931094975 REISERFS 3.6
fs = 2199.7672248935 BTRFS 3.12
Re: Скорость работы с диском
Добавлено: 2014-02-27 14:50:41
icb
Очень странно. Как же они тогда получили 10000?
Re: Скорость работы с диском
Добавлено: 2014-02-27 14:57:21
Alvares
Freebsd ZFS. Пул сделан на файле /test_zfs
fs = 2529.9389358613
atime=on/off compression on/off практически не влияют.
Но надо заметить, что это i386 256M RAM на виртуалке. x64 под рукой нет. Может, там повеселее чуть будет, хотя не уверен.
Да и проц буджетный Pentium-E5200
Re: Скорость работы с диском
Добавлено: 2014-03-01 6:35:28
DevZone
icb писал(а):Все у кого Битрикс думают что FreeBSD гораздо медленнее Linux

На деле все наоборот
Re: Скорость работы с диском
Добавлено: 2014-03-01 7:38:07
Bayerische
http://searchengines.guru/showthread.php?t=789377
Тесты Битрикс говорят только об одном: что из Битрикса надо уволить тех, кто придумал там заниматься нагрузочным тестированием. Причем гнать их надо с позором у всех на глазах. Лучше не делать никак, чем делать дерьмо.
Суть в том, что тест Битрикса сделан под сам Битрикс, т.е. он синтетический. Забить на это гавно.
Re: Скорость работы с диском
Добавлено: 2014-03-03 8:06:33
icb
Понятно про тест Битрикса.
Но почему PHP не может использовать диск на всю катушку? В чем причина таких ограничений?
Re: Скорость работы с диском
Добавлено: 2014-03-03 21:16:44
DevZone
Пусть попробуют запустить HHVM (
http://www.freshports.org/lang/hiphop-php/ )
Возможно в самой пыхе оверхеды
Re: Скорость работы с диском
Добавлено: 2014-03-04 21:26:41
Alex Keda
прикольная штука, но мне например не подойдёт - у нас биллинг - на одних Eval() и построен

)
Re: Скорость работы с диском
Добавлено: 2014-03-04 21:38:18
DevZone
https://wiki.php.net/rfc/performanceimprovements
Alex Keda писал(а):прикольная штука, но мне например не подойдёт - у нас биллинг - на одних Eval() и построен

)
php55 + opcache тогда пробуйте
Тюнинг одной штуки под битриксы
http://haydenjames.io/set-monitor-phps- ... correctly/
Re: Скорость работы с диском
Добавлено: 2014-03-05 1:57:40
icb
Странно:
Код: Выделить всё
var_dump(realpath_cache_get());
array(0) { }
Может в этом и проблема? Но почему не используется realpath_cache? Как исправить?
Re: Скорость работы с диском
Добавлено: 2014-03-05 2:56:21
DevZone
icb писал(а):Странно:
Код: Выделить всё
var_dump(realpath_cache_get());
array(0) { }
Может в этом и проблема? Но почему не используется realpath_cache? Как исправить?
Похоже на баг в php
Кстати тем кто использует NFS для кластеризации
http://php.webtutor.pl/en/2011/06/02/ru ... -solution/
Re: Скорость работы с диском
Добавлено: 2014-03-06 7:22:52
ev
Может в этом и проблема? Но почему не используется realpath_cache? Как исправить?
это баг битрикса, много лет его не хотят исправлять (ну а что вы хотели от разработчиков пхп? их команда уже стала именем нарицательным в быдлокодинге)
суть в том, что при включении open_basedir перестает работать realpath_cache
но отключение open_basedir с включением realpath_cache все равно не даст большого прироста производительности файловой подсистемы
хотя тест битрикса и покажет прирост на 20-40% из-за его алгоритма (открытие множества файлов, а именно при открытии идут потери в данном случае)
Re: Скорость работы с диском
Добавлено: 2014-03-09 16:07:09
tom.cat
Виртуалка:
Код: Выделить всё
$ uname -r
9.2-RELEASE-p3
$ php -v
PHP 5.4.25 (cli) (built: Feb 14 2014 17:11:16)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator
# php test.php
fs = 6995.0527176103