* [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) @ 2013-02-01 19:38 assabajanischer_hinterwaeldler 2013-02-01 19:45 ` Sandy Marko Knauer 2013-02-02 19:21 ` Eddy 0 siblings, 2 replies; 8+ messages in thread From: assabajanischer_hinterwaeldler @ 2013-02-01 19:38 UTC (permalink / raw To: gentoo-user-de hallo, waehrend des bootvorgangs lade ich einige daten aus einem archiv in ein ramfs. da dies einige zeit benoetigt, beginnt in den nachfolgendne skripten der timeout mechanismus. bisher erfolgt die vollstaendige verarbeitung innerhalb der zur verfuegung gestellten zeit. allerdings empfinde ich die zugehoerigen warnings als stoerend. gemaess dem runscript manual, laesst sich der timout vollstaendig abschalten. allerdings erscheint mir das nur bedingt sinnvoll. gibt es eine moeglichkeit einen laengeren zeitraum vorab anzufordern? so in der art: "ich brauch dann mal mindestens 30 sekunden" danke martin ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-01 19:38 [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) assabajanischer_hinterwaeldler @ 2013-02-01 19:45 ` Sandy Marko Knauer 2013-02-01 20:26 ` assabajanischer_hinterwaeldler 2013-02-02 19:21 ` Eddy 1 sibling, 1 reply; 8+ messages in thread From: Sandy Marko Knauer @ 2013-02-01 19:45 UTC (permalink / raw To: gentoo-user-de On 02/01/2013 08:38 PM, assabajanischer_hinterwaeldler@xunit.de wrote: > hallo, > > waehrend des bootvorgangs lade ich einige daten aus einem archiv in ein > ramfs. da dies einige zeit benoetigt, beginnt in den nachfolgendne > skripten der timeout mechanismus. bisher erfolgt die vollstaendige > verarbeitung innerhalb der zur verfuegung gestellten zeit. allerdings > empfinde ich die zugehoerigen warnings als stoerend. > > gemaess dem runscript manual, laesst sich der timout vollstaendig > abschalten. allerdings erscheint mir das nur bedingt sinnvoll. > gibt es eine moeglichkeit einen laengeren zeitraum vorab anzufordern? > so in der art: "ich brauch dann mal mindestens 30 sekunden" > > danke > martin > Hallo Martin, ich weiß jetzt nicht was du alles in ramfs legst, daher Frage ich mal warum du nicht /etc/local.d verwendest. Dann wird das Script zum Schluss ausgeführt. Geht natürlich nur wenn nichts System abhängiges rein kopierst. Alternativ, wenn das Script nicht zwingend vom System abhängt könnte ich mir ein starten mit "screen -d -m" vorstellen. Gruß, Sandy ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-01 19:45 ` Sandy Marko Knauer @ 2013-02-01 20:26 ` assabajanischer_hinterwaeldler 0 siblings, 0 replies; 8+ messages in thread From: assabajanischer_hinterwaeldler @ 2013-02-01 20:26 UTC (permalink / raw To: gentoo-user-de On Fri, Feb 01, 2013 at 08:45:27PM +0100, Sandy Marko Knauer wrote: > On 02/01/2013 08:38 PM, assabajanischer_hinterwaeldler@xunit.de wrote: > > hallo, > > > > waehrend des bootvorgangs lade ich einige daten aus einem archiv in ein > > ramfs. da dies einige zeit benoetigt, beginnt in den nachfolgendne > > skripten der timeout mechanismus. bisher erfolgt die vollstaendige > > verarbeitung innerhalb der zur verfuegung gestellten zeit. allerdings > > empfinde ich die zugehoerigen warnings als stoerend. > > > > gemaess dem runscript manual, laesst sich der timout vollstaendig > > abschalten. allerdings erscheint mir das nur bedingt sinnvoll. > > gibt es eine moeglichkeit einen laengeren zeitraum vorab anzufordern? > > so in der art: "ich brauch dann mal mindestens 30 sekunden" > > > > danke > > martin > > > Hallo Martin, > > ich weiß jetzt nicht was du alles in ramfs legst, daher Frage ich mal > warum du nicht /etc/local.d verwendest. Dann wird das Script zum Schluss > ausgeführt. Geht natürlich nur wenn nichts System abhängiges rein > kopierst. Alternativ, wenn das Script nicht zwingend vom System abhängt > könnte ich mir ein starten mit "screen -d -m" vorstellen. > > Gruß, > Sandy > Hallo, ich habe / komplett im arbeitsspeicher liegen. da die groesse eines initramfs begrenzt zu sein scheint, musste ich das ganze in zwei teile unterteilen. diese werden dann in localmount nachgeladen. eine verwendung von weiteren programmen ausserhalb von /bin und /sbin ist daher nicht moeglich. neben der manipulation von localmount, koennte dies auch innerhalb von einem weiteren init-skript erfolgen, verschiebt diese problematik aber lediglich. gruss martin ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-01 19:38 [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) assabajanischer_hinterwaeldler 2013-02-01 19:45 ` Sandy Marko Knauer @ 2013-02-02 19:21 ` Eddy 2013-02-04 22:22 ` assabajanischer_hinterwaeldler 1 sibling, 1 reply; 8+ messages in thread From: Eddy @ 2013-02-02 19:21 UTC (permalink / raw To: gentoo-user-de Am 01.02.2013 20:38, schrieb assabajanischer_hinterwaeldler@xunit.de: > gemaess dem runscript manual, laesst sich der timout vollstaendig > abschalten. allerdings erscheint mir das nur bedingt sinnvoll. > gibt es eine moeglichkeit einen laengeren zeitraum vorab anzufordern? > so in der art: "ich brauch dann mal mindestens 30 sekunden" verstehe ich Dich richtig? aus der /etc/rc.conf --------------- # By default we assume that all daemons will start correctly. # However, some do not - a classic example is that they fork and return # 0 AND then child barfs on a configuration error. Or the daemon has a # bug and the child crashes. You can set the number of milliseconds # start-stop-daemon # waits to check that the daemon is still running after starting here. # The default is 0 - no checking. #rc_start_wait=100 ------------------- oder meinst Du was anderes? CU Eddy -- . .. __..---/______//-----. (( ) .".--.```| - /.--. =: ( VROOM! )) (.: {} :__L______: {} :__; __--( __- -_= ) *--* *--* ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-02 19:21 ` Eddy @ 2013-02-04 22:22 ` assabajanischer_hinterwaeldler 2013-02-05 13:49 ` assabajanischer_hinterwaeldler 0 siblings, 1 reply; 8+ messages in thread From: assabajanischer_hinterwaeldler @ 2013-02-04 22:22 UTC (permalink / raw To: gentoo-user-de On Sat, Feb 02, 2013 at 08:21:51PM +0100, Eddy wrote: > Am 01.02.2013 20:38, schrieb assabajanischer_hinterwaeldler@xunit.de: > > gemaess dem runscript manual, laesst sich der timout vollstaendig > > abschalten. allerdings erscheint mir das nur bedingt sinnvoll. > > gibt es eine moeglichkeit einen laengeren zeitraum vorab anzufordern? > > so in der art: "ich brauch dann mal mindestens 30 sekunden" > > verstehe ich Dich richtig? > > aus der /etc/rc.conf > --------------- > # By default we assume that all daemons will start correctly. > # However, some do not - a classic example is that they fork and return > # 0 AND then child barfs on a configuration error. Or the daemon has a # > bug and the child crashes. You can set the number of milliseconds > # start-stop-daemon > # waits to check that the daemon is still running after starting here. > # The default is 0 - no checking. > #rc_start_wait=100 > ------------------- > oder meinst Du was anderes? > > CU > > Eddy > > -- > . .. > __..---/______//-----. (( ) > .".--.```| - /.--. =: ( VROOM! )) > (.: {} :__L______: {} :__; __--( __- -_= ) > *--* *--* > hallo, ueber diesen wert bin ich auch schon gestolpert. allerdings scheint er keinerlei einfluss zu haben. zumindest wenn ich eine zeitverzoegerung nachstelle und das ganze direkt von der konsole aus starte. oder wird dieser wert nur waehrend des bootvorgangs ausgewertet? genau meine ich folgende warnings waehrend des bootvorgangs: * mydep: waiting for mymount (50 seconds) in pseudo-code wuerde das so aussehen: old=$(service_get_value timeout_warning) service_set_value timeout_warning 30 # befehle die laenger benoetigen service_set_value timeout_warning $old ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-04 22:22 ` assabajanischer_hinterwaeldler @ 2013-02-05 13:49 ` assabajanischer_hinterwaeldler 2013-02-05 17:34 ` Sandy Marko Knauer 0 siblings, 1 reply; 8+ messages in thread From: assabajanischer_hinterwaeldler @ 2013-02-05 13:49 UTC (permalink / raw To: gentoo-user-de hallo, hab jetzt ein wenig im openrc code geschmoekert. und ohne anpassung daran laesst sich das vermutlich nich realisieren. gruss martin ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-05 13:49 ` assabajanischer_hinterwaeldler @ 2013-02-05 17:34 ` Sandy Marko Knauer 2013-02-08 17:33 ` assabajanischer_hinterwaeldler 0 siblings, 1 reply; 8+ messages in thread From: Sandy Marko Knauer @ 2013-02-05 17:34 UTC (permalink / raw To: gentoo-user-de Am 05.02.2013 14:49, schrieb assabajanischer_hinterwaeldler@xunit.de: > hallo, > > hab jetzt ein wenig im openrc code geschmoekert. und ohne anpassung > daran laesst sich das vermutlich nich realisieren. > > gruss > martin > Hi, könnte einige Interessieren die dieses Thema verfolgt haben. http://dev.gentoo.org/~vapier/openrc/projects/openrc/ticket/125.html Sandy ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) 2013-02-05 17:34 ` Sandy Marko Knauer @ 2013-02-08 17:33 ` assabajanischer_hinterwaeldler 0 siblings, 0 replies; 8+ messages in thread From: assabajanischer_hinterwaeldler @ 2013-02-08 17:33 UTC (permalink / raw To: gentoo-user-de [-- Attachment #1: Type: text/plain, Size: 907 bytes --] On Tue, Feb 05, 2013 at 06:34:47PM +0100, Sandy Marko Knauer wrote: > Am 05.02.2013 14:49, schrieb assabajanischer_hinterwaeldler@xunit.de: > > hallo, > > > > hab jetzt ein wenig im openrc code geschmoekert. und ohne anpassung > > daran laesst sich das vermutlich nich realisieren. > > > > gruss > > martin > > > Hi, > > könnte einige Interessieren die dieses Thema verfolgt haben. > > http://dev.gentoo.org/~vapier/openrc/projects/openrc/ticket/125.html > > Sandy > geht glaub ich ein etwas andere richtung. zumindest scheint es mir so sollte ausser mir noch jemand interesse an einem derartigen timeout mechanismus haben, kann er den patch im anhang verwenden. ich hoff das ist ok, dass ich den einfach so anhaeng. dazu habe ich im depend bereich das schluesselwort 'mintime' definiert. anschliessen wird die zeit in sekunden angegeben, um die der timeoutmechansimus verzoegert wird. gruss martin [-- Attachment #2: 0001-Allow-to-specify-a-minimum-service-handling-time.patch --] [-- Type: text/x-diff, Size: 4549 bytes --] From b9b31ee3c746ef7b7b4260ee4816259b3950bb70 Mon Sep 17 00:00:00 2001 From: Hinterwaeldler <assabajanischer_hinterwaeldler@xunit.de> Date: Fri, 8 Feb 2013 13:16:54 +0000 Subject: [PATCH] Allow to specify a minimum service handling time When a service is started their could be warnings due to larger processing time. To avoid the usage of the complete deactivation of the timeout mechanism a 'mintime' dependancy is introduced. During the given time the regular timeout mechanism is deactived. After the time expires the regular timeout is still able to kill the process if necessary. --- man/runscript.8 | 5 +++++ sh/gendepends.sh.in | 3 +++ src/rc/runscript.c | 51 +++++++++++++++++++++++++++++++++++++-------------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/man/runscript.8 b/man/runscript.8 index 044bef7..25a818a 100644 --- a/man/runscript.8 +++ b/man/runscript.8 @@ -191,6 +191,11 @@ Same as -jail, but for Xen DOM0 systems. .It Dv -xenu Same as -jail, but for Xen DOMU systems. .El +.It Ic mintime +Specify a minimum amount of time in seconds a service needs to complete. +During this time no timeout can occure (e.g. need more than 60 seconds). +After the given time expires, a timeout can occure. +This values only influence the timeout mechanism i.e. the service handling may use less time. .El .Pp To see how to influence dependencies in configuration files, see the diff --git a/sh/gendepends.sh.in b/sh/gendepends.sh.in index f78f3d3..987ad4b 100644 --- a/sh/gendepends.sh.in +++ b/sh/gendepends.sh.in @@ -31,6 +31,9 @@ keyword() { depend() { : } +mintime(){ + [ -n "$*" ] && echo "$RC_SVCNAME mintime $*" >&3 +} _done_dirs= for _dir in \ diff --git a/src/rc/runscript.c b/src/rc/runscript.c index e504e4a..16f7207 100644 --- a/src/rc/runscript.c +++ b/src/rc/runscript.c @@ -488,8 +488,11 @@ svc_wait(const char *svc) char file[PATH_MAX]; int fd; bool forever = false; - RC_STRINGLIST *keywords; - struct timespec interval, timeout, warn; + RC_STRINGLIST *keywords, *mintime_list; + struct timespec interval, timeout, warn, mintime; + RC_STRING *mintime_element; + char *conf_value, *mintime_check; + int conf_value_length, mintime_value = 0; /* Some services don't have a timeout, like fsck */ keywords = rc_deptree_depend(deptree, svc, "keyword"); @@ -498,6 +501,24 @@ svc_wait(const char *svc) forever = true; rc_stringlist_free(keywords); + /* Allow services to use a specified amount of time without warnings */ + mintime_list = rc_deptree_depend(deptree, svc, "mintime"); + if (mintime_list) { + mintime_element = TAILQ_FIRST(mintime_list); + if (mintime_element) { + conf_value = mintime_element->value; + conf_value_length = strlen(conf_value); + mintime_value = strtol(conf_value, &mintime_check, 10); + if (mintime_check != conf_value + conf_value_length || + mintime_value < 0) { + mintime_value = 0; + eerror("Invalid mintime definition: %s", + conf_value); + } + } + } + rc_stringlist_free(mintime_list); + snprintf(file, sizeof(file), RC_SVCDIR "/exclusive/%s", basename_c(svc)); @@ -507,6 +528,8 @@ svc_wait(const char *svc) timeout.tv_nsec = 0; warn.tv_sec = WARN_TIMEOUT; warn.tv_nsec = 0; + mintime.tv_sec = mintime_value; + mintime.tv_nsec = 0; for (;;) { fd = open(file, O_RDONLY | O_NONBLOCK); if (fd != -1) { @@ -526,15 +549,18 @@ svc_wait(const char *svc) return false; } if (!forever) { - timespecsub(&timeout, &interval, &timeout); - if (timeout.tv_sec <= 0) - return false; - timespecsub(&warn, &interval, &warn); - if (warn.tv_sec <= 0) { - ewarn("%s: waiting for %s (%d seconds)", - applet, svc, (int)timeout.tv_sec); - warn.tv_sec = WARN_TIMEOUT; - warn.tv_nsec = 0; + timespecsub(&mintime, &interval, &mintime); + if (mintime.tv_sec <= 0){ + timespecsub(&timeout, &interval, &timeout); + if (timeout.tv_sec <= 0) + return false; + timespecsub(&warn, &interval, &warn); + if (warn.tv_sec <= 0) { + ewarn("%s: waiting for %s (%d seconds)", + applet, svc, (int)timeout.tv_sec); + warn.tv_sec = WARN_TIMEOUT; + warn.tv_nsec = 0; + } } } } @@ -1348,9 +1374,6 @@ runscript(int argc, char **argv) applet_list, runlevel, depoptions); rc_stringlist_free(tmplist); - TAILQ_FOREACH(svc, services, entries) - printf("%s ", svc->value); - printf ("\n"); rc_stringlist_free(services); services = NULL; } else if (strcmp (optarg, "status") == 0) { -- 1.7.12.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-02-08 17:33 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-02-01 19:38 [gentoo-user-de] Temporaere erhoehung destTimeoutlimits in initskripten (openrc) assabajanischer_hinterwaeldler 2013-02-01 19:45 ` Sandy Marko Knauer 2013-02-01 20:26 ` assabajanischer_hinterwaeldler 2013-02-02 19:21 ` Eddy 2013-02-04 22:22 ` assabajanischer_hinterwaeldler 2013-02-05 13:49 ` assabajanischer_hinterwaeldler 2013-02-05 17:34 ` Sandy Marko Knauer 2013-02-08 17:33 ` assabajanischer_hinterwaeldler
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox