Kernel updates:
1. From Alan Cox (alan@lxorguk.ukuu.org.com)
-----------------------------------------
> If you edit fs/ext2/dir.c and rebuild a kernel with the fsync entry in
> the file operations set to file_fsync
>
> ie to
>
> static struct file_operations ext2_dir_operations = {
> NULL, /* lseek - default */
> ext2_dir_read, /* read */
> NULL, /* write - bad */
> ext2_readdir, /* readdir */
> NULL, /* select - default */
> ext2_ioctl, /* ioctl */
> NULL, /* mmap */
> NULL, /* no special open code */
> NULL, /* no special release code */
> file_sync, /* fsync */
> NULL, /* fasync */
> NULL, /* check_media_change */
> NULL /* revalidate */
> };
No impact. The system worked properly last Thursday but in fact it was
a day with few inserts
2. From Franz J Fortuny (ffortuny@ivsol.com)
-----------------------------------------
You must recompile the kernel so that file in
/usr/src/linux/fs/ext2/file.c should look like:
64 static struct file_operations ext2_file_operations = {
65 ext2_file_lseek, /* lseek */
66 generic_file_read, /* read */
67 ext2_file_write, /* write */
68 NULL, /* readdir - bad */
69 NULL, /* poll - default */
70 ext2_ioctl, /* ioctl */
71 generic_file_mmap, /* mmap */
72 #if BITS_PER_LONG == 64
73 NULL, /* no special open is
needed */
74 #else
75 ext2_open_file,
76 #endif
77 NULL, /* flush */
78 ext2_release_file, /* release */
----> 79 file_fsync, /* fsync */
80 NULL, /* fasync */
81 NULL, /* check_media_change */
82 NULL /* revalidate */
83 };
Line 79 is the one that needs to be modified.
On 2.0.36 this upgrade becomes:
extern int file_fsync();
/*
* We have mostly NULL's here: the current defaults are ok for
* the ext2 filesystem.
*/
static struct file_operations ext2_file_operations = {
NULL, /* lseek - default */
generic_file_read, /* read */
ext2_file_write, /* write */
NULL, /* readdir - bad */
NULL, /* select - default */
ext2_ioctl, /* ioctl */
generic_file_mmap, /* mmap */
NULL, /* no special open is needed */
ext2_release_file, /* release */
/*
ext2_sync_file,
*/
file_fsync, /* fsync */
NULL, /* fasync */
NULL, /* check_media_change */
NULL /* revalidate */
};
This patch solved the problem.
Problem reason:
--------------
Solid DB is currently stored on a single file large of 500M
According with solid documentation, a daemon is started on every 5000 inserts
performed on the DB in order to complete a CheckPoint.
This checkpoint operation required 1 minute and 50 seconds to be completed.
At that time, the system was overloaded and unable to handle remote
requests.
The new kernel with file.c upgrade requires now 4 seconds to complete the
same task.
Even more, solid server "feels" to work 30% faster, but we have not checked
this feeling with appropriate tools. We had no references about a referenced
transaction when using the "slow" kernel.
Many thanks to Alan and Franz for their help.
Bye
-
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/