Christophe Leroy
7fda9100bb
gpio: sysfs: change 'value' attribute to prealloc
...
The GPIO 'value' attribute is time critical. A small bench with
'perf record' on the app below shows that 80% of the time spent in
sysfs_kf_seq_show() is spent in memset() for zeroising the buffer.
|--67.48%--sysfs_kf_seq_show
| |
| |--54.40%--memset
| |
| |--11.49%--dev_attr_show
| | |
| | |--10.06%--value_show
| | | |
| | | |--4.75%--sprintf
| | | | |
This patch changes the attribute type to prealloc, eliminating the
need to zeroise the buffer at each read. 'perf record' gives the
following result.
|--42.41%--sysfs_kf_read
| |
| |--39.73%--dev_attr_show
| | |
| | |--38.23%--value_show
| | | |
| | | |--29.22%--sprintf
| | | | |
Test done with the following small app:
int main(int argc, char **argv)
{
int fd = open(argv[1], O_RDONLY);
for (;;) {
int buf[512];
read(fd, buf, 512);
lseek(fd, 0, SEEK_SET);
}
exit(0);
}
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr >
Signed-off-by: Linus Walleij <linus.walleij@linaro.org >
2017-12-20 10:28:05 +01:00
..
2017-11-02 11:10:55 +01:00
2017-11-17 14:51:24 -08:00
2017-11-14 16:54:12 -08:00
2017-11-16 09:10:59 -08:00
2017-11-15 14:11:41 -08:00
2017-11-21 15:57:07 -08:00
2017-11-13 17:56:58 -08:00
2017-11-21 16:35:54 -08:00
2017-11-15 11:56:19 -08:00
2017-11-21 16:35:54 -08:00
2017-11-04 09:26:51 +09:00
2017-11-16 16:05:01 -08:00
2017-11-14 15:32:19 -08:00
2017-11-26 14:11:54 -08:00
2017-11-17 20:04:24 -08:00
2017-11-23 16:29:05 +01:00
2017-10-22 02:22:39 +01:00
2017-11-13 19:43:50 -08:00
2017-11-16 12:47:46 -08:00
2017-11-16 12:47:46 -08:00
2017-11-17 09:51:57 -08:00
2017-11-13 01:41:39 +01:00
2017-11-02 11:10:55 +01:00
2017-11-14 16:49:31 -08:00
2017-11-17 14:58:01 -08:00
2017-11-15 13:46:33 -08:00
2017-11-02 11:10:55 +01:00
2017-11-13 21:14:07 -08:00
2017-11-13 17:56:58 -08:00
2017-11-21 15:46:44 -08:00
2017-11-02 11:10:55 +01:00
2017-11-16 09:10:59 -08:00
2017-12-20 10:28:05 +01:00
2017-11-25 08:37:16 -10:00
2017-11-21 15:57:07 -08:00
2017-11-15 13:35:43 -08:00
2017-11-16 09:10:59 -08:00
2017-11-16 01:03:19 -08:00
2017-11-17 20:16:20 -08:00
2017-11-16 09:10:59 -08:00
2017-11-17 11:54:55 -08:00
2017-11-19 08:04:41 -10:00
2017-11-13 01:34:14 +01:00
2017-11-21 15:57:07 -08:00
2017-11-21 16:35:54 -08:00
2017-11-21 16:35:54 -08:00
2017-11-21 15:57:07 -08:00
2017-11-26 14:39:20 -08:00
2017-11-21 15:57:09 -08:00
2017-11-14 18:09:31 -08:00
2017-11-21 15:46:44 -08:00
2017-11-13 17:56:58 -08:00
2017-11-15 13:39:18 -08:00
2017-11-02 11:10:55 +01:00
2017-11-17 10:56:56 -08:00
2017-11-21 16:35:54 -08:00
2017-11-16 16:05:01 -08:00
2017-11-21 15:57:07 -08:00
2017-11-15 13:46:33 -08:00
2017-11-21 15:57:07 -08:00
2017-11-17 16:10:01 -08:00
2017-11-21 15:57:07 -08:00
2017-11-25 08:37:16 -10:00
2017-11-25 08:37:16 -10:00
2017-11-21 15:57:09 -08:00
2017-11-21 15:57:07 -08:00
2017-11-13 12:10:24 -08:00
2017-11-17 09:51:57 -08:00
2017-11-16 11:27:04 -07:00
2017-11-16 09:10:59 -08:00
2017-11-20 21:38:41 -10:00
2017-10-14 00:54:41 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-16 09:10:59 -08:00
2017-11-26 14:11:54 -08:00
2017-11-17 16:10:04 -08:00
2017-11-15 10:56:56 -08:00
2017-11-13 21:14:07 -08:00
2017-12-07 10:08:12 +01:00
2017-11-25 08:37:16 -10:00
2017-11-02 11:10:55 +01:00
2017-11-15 13:37:15 -08:00
2017-11-21 15:57:07 -08:00
2017-11-16 13:06:27 -08:00
2017-11-22 21:09:18 -10:00
2017-11-17 16:56:17 -08:00
2017-11-13 17:56:58 -08:00
2017-11-16 09:15:57 -08:00
2017-11-17 20:14:10 -08:00
2017-11-16 16:05:01 -08:00
2017-11-17 20:12:08 -08:00
2017-11-25 08:37:16 -10:00
2017-11-21 16:35:54 -08:00
2017-11-17 20:21:44 -08:00
2017-11-25 08:37:16 -10:00
2017-11-14 16:54:12 -08:00
2017-11-16 16:05:01 -08:00
2017-11-10 21:33:51 +00:00
2017-11-02 11:10:55 +01:00
2017-11-21 16:35:54 -08:00
2017-11-25 08:37:16 -10:00
2017-11-02 11:10:55 +01:00
2017-11-17 14:31:27 -08:00
2017-11-16 09:10:59 -08:00
2017-11-21 16:35:54 -08:00
2017-11-02 11:10:55 +01:00
2017-11-21 15:57:07 -08:00
2017-11-21 15:57:07 -08:00
2017-11-14 16:47:47 -08:00
2017-11-17 12:08:18 -08:00
2017-11-20 21:50:24 -10:00
2017-11-14 23:57:38 +02:00
2017-11-16 09:10:59 -08:00
2017-12-08 15:32:53 +01:00
2017-11-21 15:57:07 -08:00
2017-11-21 15:57:05 -08:00
2017-11-02 11:10:55 +01:00
2017-11-13 01:40:52 +01:00
2017-11-13 01:40:52 +01:00