From be49aa7ddec52e121d562e14d4d93fd301b05fbb Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Fri, 4 Nov 2011 19:19:35 +0100 Subject: IRC. --- open_issues/performance/io_system/binutils_ld_64ksec.mdwn | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'open_issues/performance') diff --git a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn index 359d5fee..37fe9c53 100644 --- a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn +++ b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn @@ -27,6 +27,10 @@ extracted from cdf7c161ebd4a934c9e705d33f5247fd52975612 sources, 2010-10-24. On the idle grubber, this one repeatedly takes a few minutes wall time to complete successfully, contrary to a few seconds on a GNU/Linux system. +> On order of slowness may in fact be due to a Xen-specific issue, see +> [[xen_lseek]]. (But there are probably still one or two orders left, even +> without Xen.) + While processing the object files, there is heavy interaction with the relevant [[hurd/translator/ext2fs]] process. Running [[hurd/debugging/rpctrace]] on the testee shows that (primarily) an ever-repeating series of `io_seek` and -- cgit v1.2.3 From ad0f2aa843232649166e0252e28b96c1736c5082 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 2 Nov 2011 12:48:18 +0100 Subject: Add lseek/mach testcases --- .../performance/io_system/binutils_ld_64ksec.mdwn | 2 ++ open_issues/performance/io_system/test-lseek.c | 16 ++++++++++++++++ open_issues/performance/io_system/test-mach.c | 18 ++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 open_issues/performance/io_system/test-lseek.c create mode 100644 open_issues/performance/io_system/test-mach.c (limited to 'open_issues/performance') diff --git a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn index 359d5fee..39d95349 100644 --- a/open_issues/performance/io_system/binutils_ld_64ksec.mdwn +++ b/open_issues/performance/io_system/binutils_ld_64ksec.mdwn @@ -47,4 +47,6 @@ IRC, freenode, #hurd, 2011-09-01: (fgetpos actually, but that's the same) and it is indeed about 10 times slower under Xen for some reason +Also see testcase [[test-lseek.c]] and [[test-mach.c]] + [[!tag open_issue_xen]] diff --git a/open_issues/performance/io_system/test-lseek.c b/open_issues/performance/io_system/test-lseek.c new file mode 100644 index 00000000..691e9d07 --- /dev/null +++ b/open_issues/performance/io_system/test-lseek.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include +#include +int main(void) { + int fd = open("test.c", O_RDONLY); + struct timeval tv1, tv2; + int i; + gettimeofday(&tv1, NULL); + for (i = 0; i < 100000; i++) + lseek(fd, 0, SEEK_CUR); + gettimeofday(&tv2, NULL); + printf("%07lu\n", (tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec); + return 0; +} diff --git a/open_issues/performance/io_system/test-mach.c b/open_issues/performance/io_system/test-mach.c new file mode 100644 index 00000000..44f62a4e --- /dev/null +++ b/open_issues/performance/io_system/test-mach.c @@ -0,0 +1,18 @@ +#define _GNU_SOURCE +#include +#include +#include +int main(void) { + struct timeval tv1, tv2; + int i; + task_t task; + task = mach_task_self(); + mach_port_urefs_t refs; + gettimeofday(&tv1, NULL); + for (i = 0; i < 1000000; i++) { + mach_port_get_refs(task, task, MACH_PORT_RIGHT_RECEIVE, &refs); + } + gettimeofday(&tv2, NULL); + printf("%07lu\n", (tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec); + return 0; +} -- cgit v1.2.3 From 2e315ef11db39e8ee0a0decc054801521ee049dd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 5 Nov 2011 15:23:57 +0100 Subject: better formatting --- open_issues/performance/io_system/test-lseek.c | 5 +++-- open_issues/performance/io_system/test-mach.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'open_issues/performance') diff --git a/open_issues/performance/io_system/test-lseek.c b/open_issues/performance/io_system/test-lseek.c index 691e9d07..667dce66 100644 --- a/open_issues/performance/io_system/test-lseek.c +++ b/open_issues/performance/io_system/test-lseek.c @@ -3,14 +3,15 @@ #include #include #include +#define N 100000 int main(void) { int fd = open("test.c", O_RDONLY); struct timeval tv1, tv2; int i; gettimeofday(&tv1, NULL); - for (i = 0; i < 100000; i++) + for (i = 0; i < N; i++) lseek(fd, 0, SEEK_CUR); gettimeofday(&tv2, NULL); - printf("%07lu\n", (tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec); + printf("%fµs\n", (float)((tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec)/N); return 0; } diff --git a/open_issues/performance/io_system/test-mach.c b/open_issues/performance/io_system/test-mach.c index 44f62a4e..90337346 100644 --- a/open_issues/performance/io_system/test-mach.c +++ b/open_issues/performance/io_system/test-mach.c @@ -2,6 +2,7 @@ #include #include #include +#define N 1000000 int main(void) { struct timeval tv1, tv2; int i; @@ -9,10 +10,10 @@ int main(void) { task = mach_task_self(); mach_port_urefs_t refs; gettimeofday(&tv1, NULL); - for (i = 0; i < 1000000; i++) { + for (i = 0; i < N; i++) { mach_port_get_refs(task, task, MACH_PORT_RIGHT_RECEIVE, &refs); } gettimeofday(&tv2, NULL); - printf("%07lu\n", (tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec); + printf("%fµs\n", (float)((tv2.tv_sec-tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec)/N); return 0; } -- cgit v1.2.3