SRM vs mod_application

varenich

Guest
Автор оригинала: tony2001
>Я провел пару экспериментов и получилось, что ПХП настолько
>медленно читает и пишет в шаред мемори на больших объемах
>данных, насколько это вообще только возможно.
РНР ничего военного в этой сфере не использует.
shmop*, shm* в РНР используют обычные Сишные системные библиотеки по работе с shared memory.
мне кажется, что это проблемы вашего кода, даже не системы, какой бы она ни была.
Конкретно тормозят функции shmop_read и shmop_write. Если их комментаришь, то все летает. А должно быть наоборот :)
 

tony2001

TeaM PHPClub
varenich:
загляни в исходники.
основная функциональность функции shmop_write заключается в строке:
PHP:
memcpy(shmop->addr + offset, data, writesize);
как ты понимаешь, эта строка имеет мало специфичного для РНР.
 

varenich

Guest
tony2001: Я все понимаю, но все равно медленно.
 

Vasya

Guest
Автор оригинала: young
> Апач запускает процесс на каждый реквест (>v.2 трид) и
> юзает ДЛЛку (модуль
Не знаю как под виндой, но под Linux чуток не так

Какая у тебя OC?
У меня две оси -- Win2k & Linux Suse 7.2... И апачей тоже два 1.3.xx & 2.0.xx... На каждой ОС! :)
 

tony2001

TeaM PHPClub
по заказу трудящихся:

ab -n 100 http://tony/test/shmop.php
Concurrency Level: 1
Time taken for tests: 9.242 seconds
Complete requests: 100
Time per request: 92.42 [ms] (mean)
Time per request: 92.42 [ms] (mean, across all concurrent requests)
Transfer rate: 2.34 [Kbytes/sec] received

PHP:
<?
//чуть переделенный пример из мана.
// 4261681 Янв 20 21:21 php5.tar.bz2
$shm_id = shmop_open(0xff3, "c", 0644, filesize("/var/www/php5.tar.bz2"));

$shm_size = shmop_size($shm_id);
echo "SHM Block Size: ".$shm_size. " has been created.\n";

$shm_bytes_written = shmop_write($shm_id, file_get_contents("/var/www/php5.tar.bz2"), 0);

shmop_delete($shm_id);
shmop_close($shm_id);
?>

Для ленивых:
процесс чтения 4-х мегабайтного файла и записи его в шаред мемори занимает порядка 90 миллисекунд.
ASPLinux 7.2, Celeron 1200, 256 RAM
хотя не думаю, что конфигурация может повлиять на порядок цифр.
 

varenich

Guest
Автор оригинала: tony2001
по заказу трудящихся:

ab -n 100 http://tony/test/shmop.php
Concurrency Level: 1
Time taken for tests: 9.242 seconds
Complete requests: 100
Time per request: 92.42 [ms] (mean)
Time per request: 92.42 [ms] (mean, across all concurrent requests)
Transfer rate: 2.34 [Kbytes/sec] received

PHP:
<?
//чуть переделенный пример из мана.
// 4261681 Янв 20 21:21 php5.tar.bz2
$shm_id = shmop_open(0xff3, "c", 0644, filesize("/var/www/php5.tar.bz2"));

$shm_size = shmop_size($shm_id);
echo "SHM Block Size: ".$shm_size. " has been created.\n";

$shm_bytes_written = shmop_write($shm_id, file_get_contents("/var/www/php5.tar.bz2"), 0);

shmop_delete($shm_id);
shmop_close($shm_id);
?>

Для ленивых:
процесс чтения 4-х мегабайтного файла и записи его в шаред мемори занимает порядка 90 миллисекунд.
ASPLinux 7.2, Celeron 1200, 256 RAM
хотя не думаю, что конфигурация может повлиять на порядок цифр.
А теперь попробуй shmop_read
 

tony2001

TeaM PHPClub
пробовал, но специально не тестировал.
примерно те же числа.
 
Сверху