1313
|
|
|
Dimitri John Ledkov |
5 months ago
|
|
|
1312
|
|
|
Sam James |
5 months ago
|
|
|
1311
|
|
|
Michal Suchanek |
6 months ago
|
|
|
1310
|
|
|
Michal Suchanek |
6 months ago
|
|
|
1309
|
|
|
Michal Suchanek |
6 months ago
|
|
|
1308
|
|
|
Michal Suchanek |
6 months ago
|
|
|
1307
|
|
|
Lucas De Marchi |
6 months ago
|
|
|
1306
|
|
|
Emil Velikov |
6 months ago
|
|
|
1305
|
|
libkmod: Use kernel decompression when available
With the recent changes to bypass loading the file it's possible to reduce the work in userspace and delegating it to the kernel. Without any compression to illustrate:
Before: read(3, "\177ELF\2\1", 6) = 6 lseek(3, 0, SEEK_SET) = 0 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=238592, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 238592, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd85cbd1000 finit_module(3, "", 0) = 0 munmap(0x7fd85cbd1000, 238592) = 0 close(3) = 0
After: read(3, "\177ELF\2\1", 6) = 6 lseek(3, 0, SEEK_SET) = 0 finit_module(3, "", 0) = 0 close(3) = 0
When using kernel compression now it's also possible to direct libkmod to take the finit_module() path, avoiding the decompression in userspace and just delegating it to the kernel.
Before: read(3, "(\265/\375\244\0", 6) = 6 lseek(3, 0, SEEK_SET) = 0 read(3, "(\265/\375\244", 5) = 5 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3fa431e000 read(3, "\0\244\3\0\\y\6", 7) = 7 mmap(NULL, 372736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3fa414f000 brk(0x55944c6a1000) = 0x55944c6a1000 read(3, "\356|\6G\27U\20 \312\260s\211\335\333\263\326\330\336\273O\211\356\306K\360Z\341\374U6\342\221"..., 53038) = 53038 mremap(0x7f3fa431e000, 135168, 266240, MREMAP_MAYMOVE) = 0x7f3fa410e000 read(3, ",;\3\nqf\311\362\325\211\7\341\375A\355\221\371L\\\5\7\375 \32\246<(\258=K\304"..., 20851) = 20851 mremap(0x7f3fa410e000, 266240, 397312, MREMAP_MAYMOVE) = 0x7f3fa40ad000 read(3, ")\36\250\213", 4) = 4 read(3, "", 4) = 0 munmap(0x7f3fa414f000, 372736) = 0 init_module(0x7f3fa40ad010, 238592, "") = 0 munmap(0x7f3fa40ad000, 397312) = 0 close(3) = 0
After: read(3, "(\265/\375\244P", 6) = 6 lseek(3, 0, SEEK_SET) = 0 finit_module(3, "", 0x4 /* MODULE_INIT_??? */) = 0 close(3) = 0
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
|
Lucas De Marchi |
10 months ago
|
|
|
1304
|
|
|
Lucas De Marchi |
10 months ago
|
|
|
1303
|
|
|
Lucas De Marchi |
10 months ago
|
|
|
1302
|
|
|
Lucas De Marchi |
10 months ago
|
|
|
1301
|
|
|
Lucas De Marchi |
10 months ago
|
|
|
1300
|
|
|
Dmitry Antipov |
10 months ago
|
|
|
1299
|
|
|
Dmitry Antipov |
10 months ago
|
|
|
1298
|
|
|
Dmitry Antipov |
10 months ago
|
|
|
1297
|
|
|
Nicolas Schier |
1 year ago
|
|
|
1296
|
|
|
Fabrice Fontaine |
1 year ago
|
|
|
1295
|
|
|
Emil Velikov |
1 year ago
|
|
|
1294
|
|
|
Emil Velikov |
1 year ago
|
|
|