Страница 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
https://www.linux.org.ru/forum/admin/9878905
тут тож чел маеца

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
DevZone писал(а):Пусть попробуют запустить HHVM ( http://www.freshports.org/lang/hiphop-php/ )
Возможно в самой пыхе оверхеды
прикольная штука, но мне например не подойдёт - у нас биллинг - на одних 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
Тюнинг одной штуки под битриксы http://haydenjames.io/set-monitor-phps- ... correctly/
Странно:

Код: Выделить всё

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