_ports_bucket_class_iterate creates a snapshot of the buckets hash
table. This is done so that the lock protecting the hash table can be
released while we iterate over the snapshot.
Formerly, a linked list was used to store the snapshot. As the
maximal number of items is known, using an array
Some servers use ports_manage_port_operations_one_thread to process
requests and terminate when it returns. Since many of them don't detach
before shutting down, a client may receive an error if its request
arrived while the server is shutting down. Prevent those spurious errors
by forcing
The default sync interval has been changed in 9e55fdd7 from 30 to 5
seconds. This change was not reflected in the documentation.
At least for current hardware, using 30 seconds instead of just 5
alleviates the thread-storm problem. Make 30 seconds the default
again.
* libdiskfs/priv.h
* exec/exec.c (do_exec): If the formatted task name exceeds
TASK_NAME_SIZE, abbreviate it.
---
exec/exec.c | 15 +--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/exec/exec.c b/exec/exec.c
index 935762e..b068f5e 100644
--- a/exec/exec.c
+++ b/exec/exec.c
@@ -1168,9
* ext2fs/pager.c (add_pager_max_prot): Simplify expression.
---
ext2fs/pager.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/ext2fs/pager.c b/ext2fs/pager.c
index 6e99c83..9116b8c 100644
--- a/ext2fs/pager.c
+++ b/ext2fs/pager.c
@@ -1453,8 +1453,7 @@
Hi :)
tl;dr: How many pager threads does it take to skrew in a light bulb?
One.
[PATCH 1/9] libdiskfs: set the default sync interval to 30 seconds
Well, I made this one before I knew that the thread-storm problem
might just be gone with this patch series. Still, we should either
apply this
* libpager/Makefile (MIGSFLAGS): Drop -DSEQNOS.
* libpager/chg-compl.c: Adjust accordingly.
* libpager/data-request.c: Likewise.
* libpager/data-return.c: Likewise.
* libpager/data-unlock.c: Likewise.
* libpager/demuxer.c: Likewise.
* libpager/lock-completed.c: Likewise.
* libpager/no-senders.c:
Previously, libpager used multiple threads to service requests to
memory objects. This has proven to be problematic, as paging requests
often arrive in batches, resulting in the creation of many hundred
threads.
Furthermore, the semantic of paging requests requires that the
requests to an object
Previously, inum was of type int, whereas dino_ref expects ino_t. On
Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is
inlined, this does not seem to pose a problem, but if ext2fs is
compiled with -O0, this most likely results in an invalid memory access.
* ext2fs/ialloc.c
ext2fs has two kinds of pagers. One for the files, one for the disk.
Previously, both were in the same port bucket.
If a request for a file pager arrives, it most likely touches some
metadata (like the superblock). This is in turn backed by the disk
pager, so another request is generated for
Justus Winter, le Mon 28 Apr 2014 12:19:56 +0200, a écrit :
The default sync interval has been changed in 9e55fdd7 from 30 to 5
seconds. This change was not reflected in the documentation.
At least for current hardware, using 30 seconds instead of just 5
alleviates the thread-storm problem.
Justus Winter, le Mon 28 Apr 2014 12:19:57 +0200, a écrit :
Some servers use ports_manage_port_operations_one_thread to process
requests and terminate when it returns. Since many of them don't detach
before shutting down, a client may receive an error if its request
arrived while the server is
Justus Winter, le Mon 28 Apr 2014 12:19:59 +0200, a écrit :
* exec/exec.c (do_exec): If the formatted task name exceeds
TASK_NAME_SIZE, abbreviate it.
Ack.
---
exec/exec.c | 15 +--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/exec/exec.c b/exec/exec.c
Justus Winter, le Mon 28 Apr 2014 12:20:00 +0200, a écrit :
Previously, inum was of type int, whereas dino_ref expects ino_t. On
Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is
inlined, this does not seem to pose a problem, but if ext2fs is
compiled with -O0, this most
Justus Winter, le Mon 28 Apr 2014 12:20:01 +0200, a écrit :
* ext2fs/pager.c (add_pager_max_prot): Simplify expression.
Ack.
---
ext2fs/pager.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/ext2fs/pager.c b/ext2fs/pager.c
index 6e99c83..9116b8c 100644
---
Quoting Samuel Thibault (2014-04-28 12:34:43)
Justus Winter, le Mon 28 Apr 2014 12:20:00 +0200, a écrit :
Previously, inum was of type int, whereas dino_ref expects ino_t. On
Hurd/x86 the former is 32 bit wide, the latter 64. If dino_ref is
inlined, this does not seem to pose a problem,
Hi,
while testing my old HURD box (remember, real hardware, not a VM) I
noticed that I have troubles with my BIOS settings and the RTC.
The preface is that about a year ago, with my old install, I did not
have this behavior.
If I boot into the hurd, the clock settings are gone! The BIOS
On Mon, Apr 28, 2014 at 12:19:55PM +0200, Justus Winter wrote:
We will try this change on darnassus and follow-up with the results.
Unfortunately, this looks too unstable to merge as it is. There seems to
be a port leak somewhere, and it looks like support for notifications
is needed, as I could
Follow-up Comment #1, bug #18883 (project hurd):
Contrary to its documentation, my gnumach has actually 50 priorities:
shed.h:
#define NRQS50 /* 50 run queues per cpu */
[...]
#define invalid_pri(pri) (((pri) 0) || ((pri) = NRQS))
So we can actually have a bijective
Follow-up Comment #2, bug #18883 (project hurd):
Well, yes, I eventually commited the change to gnumach, and the
corresponding glibc change is in topgit's t/nice branch :)
___
Reply to this item at:
http://savannah.gnu.org/bugs/?18883
Justus Winter, le Mon 28 Apr 2014 12:19:58 +0200, a écrit :
ports_class_iterate. For this change might make ports_class_iterate
less efficient memory-wise if the number of ports belonging to the
class is low with respect to the number of ports in the bucket.
I'd say reallocing the array to
21 matches
Mail list logo