<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>3193</bug_id>
          
          <creation_ts>2003-10-22 16:13:40 +0400</creation_ts>
          <short_desc>[FR] [5.0] (ana)cron&apos;ed jobs could behave better</short_desc>
          <delta_ts>2020-09-07 22:03:09 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>crontabs</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>4245</dependson>
          <blocked>17728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>aen</cc>
    
    <cc>boyarsh</cc>
    
    <cc>dd1email</cc>
    
    <cc>erthad</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>ildar</cc>
    
    <cc>ktirf</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>nbr</cc>
    
    <cc>placeholder</cc>
    
    <cc>solo</cc>
    
    <cc>vt</cc>
    
    <cc>vvk</cc>
    
    <cc>vx8400</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10340</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2003-10-22 16:13:40 +0400</bug_when>
    <thetext>Было бы замечательно перевести дистрибутивные cronjobs на запуск из-под batch(1)
или функционально эквивалентный для обеспечения их запуска в &quot;удобное&quot; время, а
не вскоре после загрузки системы (при недоступности ее в 4 часа ночи и
включенном anacron).  Или как минимум -- запускать anacron из-под nice(1).

Некоторые ссылки по теме:
http://www.altlinux.ru/pipermail/community/2001-February/003398.html
http://www.altlinux.ru/pipermail/community/2001-February/003403.html
http://www.altlinux.ru/pipermail/sisyphus/2003-October/029323.html
http://www.altlinux.ru/pipermail/sisyphus/2003-October/029350.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35929</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2006-02-17 16:41:13 +0300</bug_when>
    <thetext>Было бы здорово иметь такую фичу к 3.1...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55301</commentid>
    <comment_count>2</comment_count>
      <attachid>2202</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-09-17 19:25:45 +0400</bug_when>
    <thetext>Created attachment 2202
load-sensitive cronjob wrapper

пример использования:
--- /etc/cron.daily/slocate.cron на основе исходного из Black Cat 6.02
/usr/local/bin/relax -l 0.1 -t 3 --once /usr/bin/slocate -u -e /tmp -e
&quot;/var/tmp,/usr/tmp,/afs,/net,/proc&quot;
---</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63079</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-02-13 11:12:59 +0300</bug_when>
    <thetext>Тж. https://lists.altlinux.org/pipermail/devel/2008-February/069577.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65969</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-03-16 23:23:39 +0300</bug_when>
    <thetext>Тж. http://www.opennet.ru/tips/info/1620.shtml (taskset -b)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79949</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-10-21 14:29:37 +0400</bug_when>
    <thetext>Просьба заценить http://git.altlinux.org/people/mike/packages/?p=idlewrap.git в качестве обёртки для запуска updatedb, makewhatis и osec.  Скрипт несовершенен и может быть доработан в сторону /etc/sysconfig/idlewrap, но будто работает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81051</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-11-13 01:32:42 +0300</bug_when>
    <thetext>2mike: Посмотри service-0.5.17-alt1 и vixie-cron-4.1.20060426-alt4-3-g3f23a87,
это проект дистрибутивного решения.
Для тех cronjob&apos;ов, запуск которых можно вообще пропустить при определённых условиях, нужен какой-то другой подход.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81358</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-11-20 01:46:49 +0300</bug_when>
    <thetext>Дим, почитав 0.5.18, мне вспомнилась та картинка о проекте создания качелей под деревом.  Фундамент для пакетного и администраторского наведения порядка по nice/ulimit для сервисов понравился (много откуда гвозди или вынимание единственного nice value из sysconfig можно будет вынимать), но:

- я-то предлагал не сервисы оборачивать, а задачи -- именно потому,
  что обобщить все cronjob&apos;ы до одних требований обычно не получается
  (например, osec важнее slocate и тем более makewhatis);
- предложенная обёртка по имени idlewrap проста как двери (и даже 
  не проверяет ionice -t, согласен) -- но при этом содержит ещё одну
  мелкую приятную фичу, которая тут оказалась выплеснута с младенцем:
  idle CPU scheduling (schedtool -D), и одну побольше -- про питание.

Попробую проверить на себе и стенде (в т.ч. стареньком железе и используя anacron), хватит ли для crond NICE_PRIORITY=10 или idle prio заметно лучше.

Доработать idlewrap до модульных тестов, конечно, можно -- но постарался сделать эту обёртку возможно тоньше и проще (подумав ещё, конфигурационный файл решил не делать).  Кажется, можно выкинуть форки на fgrep и cut.

2 legion: спасибо за участие!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81375</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-11-20 13:28:52 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; - я-то предлагал не сервисы оборачивать, а задачи -- именно потому,
&gt;   что обобщить все cronjob&apos;ы до одних требований обычно не получается
&gt;   (например, osec важнее slocate и тем более makewhatis);

Но все эти задачи не должны иметь большой nice и ionice, если только запуск задач по cron не прямая задача сервера... но и это укладывается в идею общего выставления лимитов на crond.

Сначала реализация лимитов была только для задач cronjob&apos;ов, но после обсуждения с Димой мы пришли к выводу, что лучше не городить огород для каждого сервиса, а обобщить ограничение ресурсов на все сервисы.

&gt; - предложенная обёртка по имени idlewrap проста как двери (и даже 
&gt;   не проверяет ionice -t, согласен) -- но при этом содержит ещё одну
&gt;   мелкую приятную фичу, которая тут оказалась выплеснута с младенцем:
&gt;   idle CPU scheduling (schedtool -D), и одну побольше -- про питание.

Я не стал добавлять schedtool в limited, потому что меня смутил его man-страница:

SCHED_IDLEPRIO [ patch needed ] SCHED_IDLEPRIO is similar to SCHED_BATCH, but was explicitely designed to consume only the time the CPU is idle. No iteractive boosting is done. If you used SCHED_BATCH in the -ck kernels this is what you want since 2.6.16

Я согласен с Димой, что задача по пропуску некоторых cronjob&apos;ов отличается от задачи лимитов и это нужно ещё придумать как реализовать. Я бы вынес её отдельным багом.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81389</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-11-20 16:08:59 +0300</bug_when>
    <thetext>Лёш, я вот про этот сюжет: http://www.intuit.ru/department/se/intuml/1/01_02.gif

Эта бага повешена аккурат о той задаче, которая отличается от решённой.  И детский набросок решения для _исходной_ задачи (вместе с более современным наброском idlewrap) тоже доступен.  Осталось поправить запускалки кронджобов.

Если охота повесить багу для успешно (IMHO) реализованного в service-0.5.17+ -- ну... можно :-)  И сразу закрыть.

---

schedtool(8) можешь особо не смущаться -- там о том, что в -ck семантика IDLE была присуща классу BATCH; смержен CFS scheduler был ещё в 2.6.23 и на M41/2.6.25 -D работает.

Для M40/2.6.18 можно сделать откат на -B или просто оставить nice 10..20, это не столь важно -- а ionice -c3 там уже работало.

http://lkml.indiana.edu/hypermail/linux/kernel/0603.1/0930.html
http://kerneltrap.org/node/8059

---

В limited поддержка schedtool и ionice мне _пока_ кажется бесцельной, хотя для больших систем возможность организовать affinity и отодвинуть третьестепенные сервисы совсем в фон может быть и интересной -- это лучше поговорить с support@ и заказчиками, эксплуатирующими такие системы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81402</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-11-20 18:29:08 +0300</bug_when>
    <thetext>(In reply to comment #9)
&gt; Эта бага повешена аккурат о той задаче, которая отличается от решённой.  И
&gt; детский набросок решения для _исходной_ задачи

Ещё раз, в исходной задаче описано две проблемы:
1. запуск cronjob&apos;ов с высоким приоритетом;
2. пропуск не существенных cronjob&apos;ов при определённых условиях.

Первую задачу limited решает. Я предлагал, вторую задачу вынести в отдельный баг, а не первую :)

&gt; (вместе с более современным
&gt; наброском idlewrap) тоже доступен.  Осталось поправить запускалки кронджобов.

Мне кажется задача #2 не так проста и не глядя запускать cronjob&apos;ы через idlewrap нельзя. Вместе с тем, критерии какие нужно/не нужно запускать зависят от машины.

&gt; schedtool(8) можешь особо не смущаться

Добавить его не проблема. Будет ещё опциональная ручка.

&gt; В limited поддержка schedtool и ionice мне _пока_ кажется бесцельной, хотя для больших
&gt; систем возможность организовать affinity и отодвинуть третьестепенные сервисы
&gt; совсем в фон может быть и интересной -- это лучше поговорить с support@ и
&gt; заказчиками, эксплуатирующими такие системы.

Мне кажется это полезной возможностью. Без этого у нас были только /etc/security/limits.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81411</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-11-20 20:13:35 +0300</bug_when>
    <thetext>Лёш, niceness -- это не приоритетность, а обратная величина -- пусть будет &quot;скромность&quot; :)

---

Одна часть разницы задач -- в гранулярности объекта: сервисы vs задачи из-под одного (двух дублирующих, неважно) из них.  При этом вариант &quot;занайсить весь anacron&quot; предлагался как &quot;на скору руку&quot;.

Вы с Димой решили более фундаментальную задачу в этом же направлении, но её применимость к _этой_ баге ограничивается самым дубовым из изначально предложенных вариантов -- &quot;nice anacron&quot; с поправкой на современные технологии(tm) в виде ionice.

---

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

Что конкретно этому мешает?  Или какая для updatedb и makewhatis зависимость приоритета от машины? (для osec -- уже выслушал и принял мнение rider@)

В крайнем случае /etc/cron.*/* обычно %config(noreplace), если вдруг откуда-то такая зависимость вылезет.  А как вылезет -- так и будем систематизировать, поскольку вероятность этого IMHO пренебрежимо мала.

---

Добавлять поддержку в индивидуальные cronjob-ы предлагаю так:
http://git.altlinux.org/people/mike/packages/?p=slocate.git;a=commitdiff;h=218cfbfd25b937fcb81722978980a4963d31276f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103168</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-11-15 23:19:08 +0300</bug_when>
    <thetext>Ау.  Патчи приветствуются или игнорируются?  В community@ опять напомнили про эту неприятность.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112237</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-09-17 01:09:15 +0400</bug_when>
    <thetext>ping -- поставил 20100909, опять makewhatis колотится об диск и тормозит первую загрузку системы.  Какой вообще сермяжный толк с anacron, портящего жизнь по утрам?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119492</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-03-26 11:13:01 +0300</bug_when>
    <thetext>Поправочка: ionice -t критично, иначе будем почём зря обламываться под ovz.  Отправил idlewrap-0.2.1-alt1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192272</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2020-09-07 22:03:09 +0300</bug_when>
    <thetext>Сочтём, что уже сделано в нынешних service и vixie-cron или idlewrap.
У меня вопрос отпал (возможно, после переезда на SSD лет десять назад).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2202</attachid>
            <date>2007-09-17 19:25:45 +0400</date>
            <delta_ts>2007-09-17 19:25:45 +0400</delta_ts>
            <desc>load-sensitive cronjob wrapper</desc>
            <filename>relax</filename>
            <type>text/plain</type>
            <size>813</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">IyEvYmluL3NoCiMgQSB0aW55IHdyYXBwZXIgdG8gbGV0IGNyb24gcnVuIGpvYnMgKGxpa2Ugc2xv
Y2F0ZSkgd2l0aCBhIHJlc3BlY3QKIyB0byB0aGUgc3lzdGVtIGxvYWQuIFdyaXR0ZW4gYnkgPG1p
Y2hhZWwuc2hpZ29yaW5AdXNhLm5ldD4KCkxPQUQ9MC41CSMgLWw6IHRoZSBkZWZhdWx0IGNyaXRp
Y2FsIGxvYWQgdmFsdWUKVElNRT0yCQkjIC10OiAxIGZvciB0aGUgdmVyeSBsYXN0IG1pbnV0ZSwg
MiA9PiA1IG1pbiwgMyA9PiAxNSBtaW4KT05DRT0wCQkjIC1vOiBvbmNlIHBlciBkYXkKCndoaWxl
IDoKZG8KCWNhc2UgJDEgaW4KCQktbHwtLWxvYWQpIExPQUQ9JDI7IHNoaWZ0OyBzaGlmdDsgY29u
dGludWU7OwoJCS10fC0tdGltZSkgVElNRT0kMjsgc2hpZnQ7IHNoaWZ0OyBjb250aW51ZTs7CgkJ
LW98LS1vbmNlKSBPTkNFPTE7ICBzaGlmdDsgICAgICAgIGNvbnRpbnVlOzsKCQktaHwtLWhlbHAp
IGhlYWQgLWwgNiAiJDAiOyBleGl0IDA7OwoJCSopCSAgIGJyZWFrOzsKCWVzYWMKZG9uZQpMT0FE
PSQoZWNobyAiMTAwKiRMT0FEInxiYykKTE9BRD0ke0xPQUQlLip9Ck5PVz0kKGVjaG8gIjEwMCpg
L3Vzci9iaW4vY3V0IC1mJFRJTUUgLWQnICcgL3Byb2MvbG9hZGF2Z2AifGJjKQpOT1c9JHtOT1cl
Lip9ClsgIiQoL2Jpbi9scyAtbCAtLXRpbWU9dXNlICIkMSJ8L3Vzci9iaW4vY3V0IC1jNDMtNDgp
IiA9IFwKCSIkKC9iaW4vZGF0ZSArIiViICVkIikiIF0gJiYgZXhpdCAwCSMgJDEgYWxyZWFkeSB1
c2VkIHRvZGF5CgkJCQkJCSMgKG1heWJlIG5vdCBieSB1cyA6LS8gKQpbICROT1cgLWxlICRMT0FE
IF0gJiYgZXZhbCAkKgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>