[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] rpcbench: Benchmark für Syscall
+ rpcbench: Mit dem Parameter sys misst rpcbench jetzt die Dauer eines
get_tick_count-Syscalls. Das ist recht hilfreich, wenn man am
Optimieren des Kernels verzweifeln möchte.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/rpcbench/rpcbench.c | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/src/modules/rpcbench/rpcbench.c b/src/modules/rpcbench/rpcbench.c
index f4fc41c..7b407eb 100644
--- a/src/modules/rpcbench/rpcbench.c
+++ b/src/modules/rpcbench/rpcbench.c
@@ -49,6 +49,7 @@
void display_usage(void);
int client(void);
+int syscall(void);
void display_stats(uint32_t time, uint64_t data_size);
int server(void);
@@ -72,6 +73,8 @@ int main(int argc, char* argv[])
return client();
} else if (strcmp(argv[1], "server") == 0) {
return server();
+ } else if (strcmp(argv[1], "sys") == 0) {
+ return syscall();
} else {
display_usage();
return -1;
@@ -128,6 +131,26 @@ int client()
return 0;
}
+int syscall(void)
+{
+ int i;
+ uint64_t total, t1, t2;
+
+ total = 0;
+ for (i = 0; i < 30; i++) {
+ asm volatile("rdtsc" : "=A" (t1));
+ get_tick_count();
+ asm volatile("rdtsc" : "=A" (t2));
+ printf("syscalls: %lld Takte\n", t2 - t1);
+ total += t2 - t1;
+ }
+ printf("syscalls: Insgesamt %lld Takte, Durchschnitt %lld\n\n",
+ total, total / 30);
+
+
+ return 0;
+}
+
void display_stats(uint32_t time, uint64_t data_size)
{
printf(" %lld Bytes in %d Sekunden transportiert\n", data_size,
--
1.6.0.2