Date: Sat, 24 Jul 1999 00:27:51 +0200 (CEST) From: Ingo Molnar <mingo@chiara.csoma.elte.hu> To: est@hyperreal.org Subject: [patch] lowlatency-2.3.12-A0, sound, multimedia performance, etc. This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1247997369-171102536-932768745=:9901 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <Pine.LNX.3.96.990724002620.9901D@chiara.csoma.elte.hu> On Fri, 23 Jul 1999 est@hyperreal.org wrote: > Benno's latencytest is great: www.gardena.net/benno/linux/audio/ > > I'd come to about the same conclusions he does just watching /dev/rtc > skips at 1khz. now i can reproduce it as well - thanks to Benno's cool utility. Could you (and everybody else having sound problems under high load) try the attached patch? It dramatically reduces sound skipping here: [root@hell latencytest0.41]# ./latencytest none 3 256 0 350000000 fragment latency = 1.451247 ms cpu latency = 1.160998 ms 2.4ms ( 0)| 1MS num_time_samples=21856 num_times_within_1ms=21856 factor=100.000000 2MS num_time_samples=21856 num_times_within_2ms=21856 factor=100.000000 [...] 314 root 18 0 740 740 576 R 0 97.3 0.5 0:02 top 300 root 16 0 672 672 356 R 0 81.6 0.5 0:24 latencytest top -d 0.01 was running during the above test - it caused lots of skipping before. Generating heavy disk IO on the patched kernel does not cause a single missed fragment either. the patch reduces the size of some critical 'scheduling atoms', ie. the size of code paths within the kernel that execute code without ever checking for ->need_resched. The solution in the patch is not final, but i'd first like to identify all remaining problems that affect scheduling latencies. The patch is for 2.3.12, but should apply to 2.2.10 as well. -- mingo --- linux/include/asm-i386/uaccess.h.orig2 Sat Jul 24 00:54:18 1999 +++ linux/include/asm-i386/uaccess.h Sat Jul 24 00:55:48 1999 @@ -270,6 +270,7 @@ : "=&c"(size), "=&D" (__d0), "=&S" (__d1) \ : "r"(size & 3), "0"(size / 4), "1"(to), "2"(from) \ : "memory"); \ + if (current->need_resched) schedule(); \ } while (0) #define __copy_user_zeroing(to,from,size) \ @@ -298,6 +299,7 @@ : "=&c"(size), "=&D" (__d0), "=&S" (__d1) \ : "r"(size & 3), "0"(size / 4), "1"(to), "2"(from) \ : "memory"); \ + if (current->need_resched) schedule(); \ } while (0) /* We let the __ versions of copy_from/to_user inline, because they're often @@ -338,6 +340,7 @@ : "=c"(size), "=&S" (__d0), "=&D" (__d1)\ : "1"(from), "2"(to), "0"(size/4) \ : "memory"); \ + if (current->need_resched) schedule(); \ break; \ case 1: \ __asm__ __volatile__( \ @@ -428,6 +431,7 @@ : "=c"(size), "=&S" (__d0), "=&D" (__d1)\ : "1"(from), "2"(to), "0"(size/4) \ : "memory"); \ + if (current->need_resched) schedule(); \ break; \ case 1: \ __asm__ __volatile__( \ ---1247997369-171102536-932768745=:9901 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="lowlatency-2.3.12-A0" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.96.990724002545.9901B@chiara.csoma.elte.hu> Content-Description: LS0tIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvdWFjY2Vzcy5oLm9yaWcyCVNh dCBKdWwgMjQgMDA6NTQ6MTggMTk5OQ0KKysrIGxpbnV4L2luY2x1ZGUvYXNt LWkzODYvdWFjY2Vzcy5oCVNhdCBKdWwgMjQgMDA6NTU6NDggMTk5OQ0KQEAg LTI3MCw2ICsyNzAsNyBAQA0KIAkJOiAiPSZjIihzaXplKSwgIj0mRCIgKF9f ZDApLCAiPSZTIiAoX19kMSkJCVwNCiAJCTogInIiKHNpemUgJiAzKSwgIjAi KHNpemUgLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pCVwNCiAJCTogIm1lbW9y eSIpOwkJCQkJCVwNCisJaWYgKGN1cnJlbnQtPm5lZWRfcmVzY2hlZCkgc2No ZWR1bGUoKTsJCQkJXA0KIH0gd2hpbGUgKDApDQogDQogI2RlZmluZSBfX2Nv cHlfdXNlcl96ZXJvaW5nKHRvLGZyb20sc2l6ZSkJCQkJXA0KQEAgLTI5OCw2 ICsyOTksNyBAQA0KIAkJOiAiPSZjIihzaXplKSwgIj0mRCIgKF9fZDApLCAi PSZTIiAoX19kMSkJCVwNCiAJCTogInIiKHNpemUgJiAzKSwgIjAiKHNpemUg LyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pCVwNCiAJCTogIm1lbW9yeSIpOwkJ CQkJCVwNCisJaWYgKGN1cnJlbnQtPm5lZWRfcmVzY2hlZCkgc2NoZWR1bGUo KTsJCQkJXA0KIH0gd2hpbGUgKDApDQogDQogLyogV2UgbGV0IHRoZSBfXyB2 ZXJzaW9ucyBvZiBjb3B5X2Zyb20vdG9fdXNlciBpbmxpbmUsIGJlY2F1c2Ug dGhleSdyZSBvZnRlbg0KQEAgLTMzOCw2ICszNDAsNyBAQA0KIAkJCTogIj1j IihzaXplKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSlcDQogCQkJOiAi MSIoZnJvbSksICIyIih0byksICIwIihzaXplLzQpCVwNCiAJCQk6ICJtZW1v cnkiKTsJCQkJXA0KKwkJaWYgKGN1cnJlbnQtPm5lZWRfcmVzY2hlZCkgc2No ZWR1bGUoKTsJCVwNCiAJCWJyZWFrOwkJCQkJCVwNCiAJY2FzZSAxOgkJCQkJ CQlcDQogCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJXA0KQEAgLTQyOCw2 ICs0MzEsNyBAQA0KIAkJCTogIj1jIihzaXplKSwgIj0mUyIgKF9fZDApLCAi PSZEIiAoX19kMSlcDQogCQkJOiAiMSIoZnJvbSksICIyIih0byksICIwIihz aXplLzQpCVwNCiAJCQk6ICJtZW1vcnkiKTsJCQkJXA0KKwkJaWYgKGN1cnJl bnQtPm5lZWRfcmVzY2hlZCkgc2NoZWR1bGUoKTsJCVwNCiAJCWJyZWFrOwkJ CQkJCVwNCiAJY2FzZSAxOgkJCQkJCQlcDQogCQlfX2FzbV9fIF9fdm9sYXRp bGVfXygJCQkJXA0K ---1247997369-171102536-932768745=:9901-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/