Jail limits under FREEBSD-CURRENT

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kostjn
проходил мимо

Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-20 18:59:57

Привет.
Написал патч для лимитов на jail-ы. Патч для FreeBSD-CURRENT.
Ограничиваем CPU, память, число процессов, число файловых дескрипторов.
Лимиты можно менять во время работы jail-а, без перезагрузки.
Скачать можно тут
http://kostjn.spb.ru/patch-jail-limit-8CURRENT.tar.gz
В README описано как пользоваться.
Буду благдарен, если найдете время для тестирования.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение zingel » 2009-05-20 19:02:57

Это Вы написали? :good:

Почетно.
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение ProFTP » 2009-05-20 19:25:11

а почему для CURRENT, а не для STABLE 7.1?
kostjn писал(а): Буду благдарен, если найдете время для тестирования.
как работает этот пачт не подскажешь?
http://forum.lissyara.su/viewtopic.php?f=16&t=16617
как пропатчить?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Гость
проходил мимо

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Гость » 2009-05-20 19:34:34

zingel писал(а):Это Вы написали? :good:

Почетно.
Да. Пока нет. Когда в основное дерево примут будет здорово :)
Нужно тестировать и еще раз тестировать.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение ProFTP » 2009-05-20 19:38:46

а ты его постаивл? нормально поставилось?
за какое время исхродники 8.0 CURRENT? когда ты обновлял?

куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Последний раз редактировалось ProFTP 2009-05-20 19:40:45, всего редактировалось 2 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Гость
проходил мимо

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Гость » 2009-05-20 19:39:14

ProFTP писал(а):а почему для CURRENT, а не для STABLE 7.1?
kostjn писал(а): Буду благдарен, если найдете время для тестирования.
как работает этот пачт не подскажешь?
http://forum.lissyara.su/viewtopic.php?f=16&t=16617
как пропатчить?
Потому что комиты идут в CURRENT. Кроме этого разработчики в CURRENT серьезно перепилили системные вызовы связанные с jail-ами.
Можно переделать под STABLE, но в этом смысла нет. 8 выйдет уже скоро.
Это старые патчи. Все они базируются на этом http://wiki.freebsd.org/JailResourceLimits.
Работают только с BSD планировщиком, память реально не ограничивают.

Гость
проходил мимо

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Гость » 2009-05-20 19:42:42

ProFTP писал(а):а ты его постаивл? нормально поставилось?
за какое время исхродники 8.0 CURRENT? когда ты обновлял?

куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Да конечно. Могу ядро рабочее прислать :)
Обновлялся 2 часа назад :) После этого пропатчил и собрал ядро.
Все ошибки и проблемы пока сюда. После тестирования сделаем pr.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение ProFTP » 2009-05-20 20:09:40

куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-20 20:19:14

ProFTP писал(а):куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Если все ок, можно подписаться на freebsd-jail http://lists.freebsd.org/mailman/listinfo/freebsd-jail, и туда написать :).

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение terminus » 2009-05-20 20:31:21

Фигасе! Интересно. :smile: А в листы уже писали (описали архитектуру предлагаемого решения)?

---

А - увидил. Пока в листах ответа нет...

---

Надо будет потестить (есть у меня на работе CURRENT для таких вещей) :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Alex Keda » 2009-05-20 20:49:59

Константин, вы зря в копию не поставили CURRENT рассылку.
по джайлам не многие читают, а вот куррент - куда больше народу читает. в т.ч. и разаработчики
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение terminus » 2009-05-21 11:42:51

На CURRENT от 05.05.2009 собрать не вышло. Счас накачусь до самого последнего и попробую еще раз. Ошибка такая:

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

===> usr.bin/ipcrm (all)
cc -O2 -pipe  -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector  -c
/usr/src/usr.bin/ipcrm/ipcrm.c
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'msgrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:93: warning: implicit declaration of function 'ms
gctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:108: warning: implicit declaration of function 'm
sgget'
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'shmrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:134: warning: implicit declaration of function 's
hmctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:149: warning: implicit declaration of function 's
hmget'
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'semrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:176: warning: implicit declaration of function 's
emctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:191: warning: implicit declaration of function 's
emget'
cc -O2 -pipe  -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector  -c
/usr/src/usr.bin/ipcrm/../ipcs/ipc.c
cc -O2 -pipe  -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector   -o
 ipcrm ipcrm.o ipc.o -lkvm
gzip -cn /usr/src/usr.bin/ipcrm/ipcrm.1 > ipcrm.1.gz
===> usr.bin/ipcs (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/ipcs/ipcs.c
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/ipcs/ipc.c
cc -O2 -pipe  -std=gnu99 -fstack-protector   -o ipcs ipcs.o ipc.o -lkvm
gzip -cn /usr/src/usr.bin/ipcs/ipcs.1 > ipcs.1.gz
===> usr.bin/join (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/join/join.c
cc -O2 -pipe  -std=gnu99 -fstack-protector   -o join join.o
gzip -cn /usr/src/usr.bin/join/join.1 > join.1.gz
===> usr.bin/jot (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/jot/jot.c
cc -O2 -pipe  -std=gnu99 -fstack-protector   -o jot jot.o
gzip -cn /usr/src/usr.bin/jot/jot.1 > jot.1.gz
===> usr.bin/kdump (all)
cc -O2 -pipe  -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/kdump
/kdump.c
cc -O2 -pipe  -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector  -c ioctl.c
cc -O2 -pipe  -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector  -c kdump_subr.c
cc -O2 -pipe  -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/kdump
/../ktrace/subr.c
cc -O2 -pipe  -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector   -o kdump kdump.o ioctl.o
 kdump_subr.o subr.o
gzip -cn /usr/src/usr.bin/kdump/kdump.1 > kdump.1.gz
===> usr.bin/keylogin (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/keylogin/keylogi
n.c
/usr/src/usr.bin/keylogin/keylogin.c: In function 'main':
/usr/src/usr.bin/keylogin/keylogin.c:76: warning: implicit declaration of functi
on 'key_setnet'
cc -O2 -pipe  -std=gnu99 -fstack-protector   -o keylogin keylogin.o -lrpcsvc
gzip -cn /usr/src/usr.bin/keylogin/keylogin.1 > keylogin.1.gz
===> usr.bin/keylogout (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/keylogout/keylog
out.c
cc -O2 -pipe  -std=gnu99 -fstack-protector   -o keylogout keylogout.o
gzip -cn /usr/src/usr.bin/keylogout/keylogout.1 > keylogout.1.gz
===> usr.bin/killall (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/killall/killall.
c
In file included from /usr/src/usr.bin/killall/killall.c:32:
/usr/obj/usr/src/tmp/usr/include/sys/jail.h:47: error: 'RLIM_NLIMITS' undeclared
 here (not in a function)
*** Error code 1

Stop in /usr/src/usr.bin/killall.
*** Error code 1

Stop in /usr/src/usr.bin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
[root@hius /usr/src]#
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Dorlas » 2009-05-21 12:26:06

Отличная новость - сам Jail-ы использую уже где-то полгода на нескольких серверах - мысль о ограничении ресурсов давно лежит у меня в свободном поиске :)

Постараюсь помощь в тестировании - сейчас сливаю src для CURRENT-а, потом запущу сборку.

Тестировать скорее всего буду в VmWare (т.к. под рукой нет свободной машинки) - но думаю никакой разницы не будет.

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-21 13:18:16

terminus писал(а):На CURRENT от 05.05.2009 собрать не вышло. Счас накачусь до самого последнего и попробую еще раз. Ошибка такая:

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

===> usr.bin/ipcrm (all)
===> usr.bin/killall (all)
cc -O2 -pipe  -std=gnu99 -fstack-protector  -c /usr/src/usr.bin/killall/killall.
c
In file included from /usr/src/usr.bin/killall/killall.c:32:
/usr/obj/usr/src/tmp/usr/include/sys/jail.h:47: error: 'RLIM_NLIMITS' undeclared
 here (not in a function)
*** Error code 1

Stop in /usr/src/usr.bin/killall.
*** Error code 1
Патч наложился нормально?
Проблема в разнице хедер файла jail.h в /usr/include/sys/ /usr/src/sys/sys/jail.h видимо.
Скопируйте файл из /usr/src/sys/sys/jail.h в /usr/include/sys/. Очистите /usr/obj и попробуйте собрать заново.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Dorlas » 2009-05-21 14:20:39

Я сейчас тоже запустил сборку на сервере - система FreeBSD 7.2-STABLE. У меня файлы jail.h тоже отличаются...

Получается, с 7.2 до CURRENT так просто не прыгнуть? Или это из-за патча?

Сейчас поставил на закачку последний снапшот с CURRENT:
ftp://ftp.freebsd.org/pub/FreeBSD/snaps ... -disc1.iso

думаю, пригодится :)

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение terminus » 2009-05-21 14:34:34

kostjn писал(а):Патч наложился нормально?
Проблема в разнице хедер файла jail.h в /usr/include/sys/ /usr/src/sys/sys/jail.h видимо.
Скопируйте файл из /usr/src/sys/sys/jail.h в /usr/include/sys/. Очистите /usr/obj и попробуйте собрать заново.
На сегодняшнем CURRENT все скомпилилось как надо. Счас начну мучать.

Спасибо. :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-21 14:37:01

Dorlas писал(а):Я сейчас тоже запустил сборку на сервере - система FreeBSD 7.2-STABLE. У меня файлы jail.h тоже отличаются...

Получается, с 7.2 до CURRENT так просто не прыгнуть? Или это из-за патча?

Сейчас поставил на закачку последний снапшот с CURRENT:
ftp://ftp.freebsd.org/pub/FreeBSD/snaps ... -disc1.iso

думаю, пригодится :)
Не собирается из за патча :). Суть в том, что в /usr/include старые хедеры. Эти хедеры в /usr/src/sys/sys/ патчатся. Поэтому если не собирается мир, то нужно после команды patch сделать

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

cp /usr/src/sys/sys/filedesc.h /usr/include/sys/filedesc.h
cp /usr/src/sys/sys/jail.h /usr/include/sys/jail.h
cp /usr/src/sys/sys/kernel.h /usr/include/sys/kernel.h
cp /usr/src/sys/sys/ktr.h /usr/include/sys/ktr.h
cp /usr/src/sys/sys/proc.h /usr/include/sys/proc.h
И после этого собирать мир.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Dorlas » 2009-05-21 14:55:38

Пока собирается мир и качается ISO-шка, хочется задать пару вопросов - уж больно любопытно:

1) Сколько времени ушло у Вас, чтобы написать эти патчи?
2) Ранее для FreeBSD уже что-то писали? Я в восторге - но совершенно не представляю, как люди до такого доходят :Bravo:

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-21 15:03:50

Dorlas писал(а):Пока собирается мир и качается ISO-шка, хочется задать пару вопросов - уж больно любопытно:

1) Сколько времени ушло у Вас, чтобы написать эти патчи?
2) Ранее для FreeBSD уже что-то писали? Я в восторге - но совершенно не представляю, как люди до такого доходят :Bravo:
Около месяца :) Долго мучился с новым шедулером, с пониманием того, как же работает система виртуальной памяти, с блокировками :).
Неа не писал.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение Alex Keda » 2009-05-21 15:49:24

рацпредложение - объядинить jget+jset не думали?
просто ключ добавить что происходит - get или set =)
==========
собираю на amd64
завтра узнаю, собралось или нет =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение terminus » 2009-05-21 16:02:29

OFFTOPIC

Товарищи, есть вопрос немного не по теме.
Собрал я значит сегодняшний CURRENT с патчами товарища kostjn, поставил все как надо, и решил из того же /usr/obj поставить и джайлы. То есть после установки системы я /usr/obj не удалял и /usr/src не чистил. Значит делаю все по хендбуку:

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

# setenv D /here/is/the/jail
# mkdir -p $D 
# cd /usr/src
# make world DESTDIR=$D 
# cd etc/ [1]
# make distribution DESTDIR=$D 
# mount -t devfs devfs $D/dev
А он кажется начал по новой пересобирать мир (уже час make world DESTDIR= выполняет). Вопрос - я что-то проаустил (в карренте теперь по-другому джайлы ставится), или это какой-то косячек карента? Или это у меня с памятью какая беда (вроде недавно ставил джайлы в 7.х используя готовый /usr/obj и кажется там быстрее было)

нипаняятна... :smile:

---

не - меня от жары глючит... все правильно - ведь make world выполняется же... :fool: :pardon:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-21 16:22:49

lissyara писал(а):рацпредложение - объядинить jget+jset не думали?
просто ключ добавить что происходит - get или set =)
Эти программки были написаны только для теста, на коленке. Разумеется нужно придумать простой и логичный интерфейс для управления jail-ами.
Как Вам видится схема управления jail-ами?
Насколько удачной(неудачной) кажется идея использовать классы регистрации пользователей в login.conf?

kostjn
рядовой
Сообщения: 31
Зарегистрирован: 2009-05-20 20:14:02

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение kostjn » 2009-05-21 16:25:09

terminus писал(а): не - меня от жары глючит... все правильно - ведь make world выполняется же... :fool: :pardon:
Если придется пересобирать ядро не удаляйте /usr/obj, и используйте

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

make buildkernek KERNCONF=BOOK KERNFAST=1
На порядок ускоряет сборку, только в 8 эту фишку добавили.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение paradox » 2009-05-21 16:28:55

Не собирается из за патча . Суть в том, что в /usr/include старые хедеры. Эти хедеры в /usr/src/sys/sys/ патчатся. Поэтому если не собирается мир, то нужно после команды patch сделать
cp /usr/src/sys/sys/filedesc.h /usr/include/sys/filedesc.h
cp /usr/src/sys/sys/jail.h /usr/include/sys/jail.h
cp /usr/src/sys/sys/kernel.h /usr/include/sys/kernel.h
cp /usr/src/sys/sys/ktr.h /usr/include/sys/ktr.h
cp /usr/src/sys/sys/proc.h /usr/include/sys/proc.h
брр
чтото не то и не так

когда собираеться мир /usr/include/* вообще не затрагиваеться
мир собираеться и использует токо /usr/src/*

так что пересмотрите что то не то или не так делаете или сделали

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Jail limits under FREEBSD-CURRENT

Непрочитанное сообщение terminus » 2009-05-21 16:36:51

kostjn писал(а):Как Вам видится схема управления jail-ами?
Насколько удачной(неудачной) кажется идея использовать классы регистрации пользователей в login.conf?
С точки зрения админа - это не очень удобно. Для именения лимитов надо сначала добавить класс с соответвующими параметрами и тольео мотом прыгать на него... Наверняка должна быть возможность создавать классы динамически, но на этот вопрос, наверно, только в листах ответят...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.