This bug is missing log files that will aid in diagnosing the problem.
While running an Ubuntu kernel (not a mainline or third-party kernel)
please enter the following command in a terminal window:
apport-collect 1785020
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable
to run this command, please add a comment stating that fact and change
the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the
Ubuntu Kernel Team.
** Changed in: linux (Ubuntu)
Status: New => Incomplete
** Tags added: bionic
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1785020
Title:
fsync is slow on later kernels with ext4 filesystms
Status in linux package in Ubuntu:
Incomplete
Bug description:
So this is a simple one, if I run the following code (see below) on Ubuntu
18.04 (4.15.0-29-generic ) and against Ubuntu 16.04 ( 4.4.0-87-generic) I get
two different results ; The question is why? It seems that fsync may be broken
in the latest kernel and may well be broken as early as 4.10 ? This has huge
implications around performance sensitive applications like mysql.
It also so worth noting that I'm running this against an ext4 filesystem with
the following mount options
rw,noatime,nodiratime,nobarrier,data=journal
4.4.0-87-generic - # time ./fsync
real 0m7.537s <-----
user 0m0.000s
sys 0m1.060s <-----
4.15.0-29-generic - # time ./fsync
real 1m38.299s <-----
user 0m0.013s
sys 0m0.893s <-----
Linux buntu-1804 4.15.0-29-generic
no sync() seconds:0.024438 writes per second:0.000000
sync() seconds:1.705764 writes per second:0.000000
real 3m6.475s
user 0m0.006s
sys 0m1.725s
Linux ubuntu 4.4.0-87-generic
no sync() seconds:0.012887 writes per second:0.000001
sync() seconds:0.736563 writes per second:0.000000
real 0m8.945s
user 0m0.016s
sys 0m0.732s
#!/usr/bin/python
import os, sys, mmap
# Open a file
fd = os.open( "/a/testfile", os.O_RDWR|os.O_CREAT|os.O_DIRECT )
m = mmap.mmap(-1, 512)
for i in range (1,10000):
os.lseek(fd,os.SEEK_SET,0)
m[1] = "1"
os.write(fd, m)
os.fsync(fd)
# Close opened file
os.close( fd )
#define _GNU_SOURCE
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>
void withSync() {
int f = open( "/a/t8" , O_RDWR | O_CREAT |O_DIRECT );
lseek (f, 0, SEEK_SET );
int records = 10*1000;
clock_t ustart = clock();
for(int i = 0; i < records; i++) {
write(f, "012345678901234567890123456789" , 30);
fsync(f);
}
clock_t uend = clock();
close (f);
printf(" sync() seconds:%lf writes per second:%lf\n",
((double)(uend-ustart))/(CLOCKS_PER_SEC),
((double)records)/((double)(uend-ustart))/(CLOCKS_PER_SEC));
}
void withoutSync() {
int f = open( "/a/t10" , O_RDWR | O_CREAT | O_DIRECT );
lseek (f, 0, SEEK_SET );
int records = 10*1000;
clock_t ustart = clock();
for(int i = 0; i < records; i++) {
write(f, "012345678901234567890123456789" , 30 );
}
clock_t uend = clock();
close (f);
printf("no sync() seconds:%lf writes per second:%lf \n",
((double)(uend-ustart))/(CLOCKS_PER_SEC),
((double)records)/((double)(uend-ustart))/(CLOCKS_PER_SEC));
}
int main(int argc, const char * argv[])
{
withoutSync();
withSync();
return 0;
}
Linux buntu-1804 4.15.0-29-generic
no sync() seconds:0.024438 writes per second:0.000000
sync() seconds:1.705764 writes per second:0.000000
real 3m6.475s
user 0m0.006s
sys 0m1.725s
Linux ubuntu 4.4.0-87-generic
no sync() seconds:0.012887 writes per second:0.000001
sync() seconds:0.736563 writes per second:0.000000
real 0m8.945s
user 0m0.016s
sys 0m0.732s
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1785020/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp