public inbox for gentoo-user-de@lists.gentoo.org
 help / color / mirror / Atom feed
* [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