scoutfs: remove inode mtime index

This index is unused - we can gain some create performance by removing it.

To verify this, I ran createmany for 10 million files:

 $ createmany -o '/scoutfs/file_%lu' 10000000

Before this patch:
 total: 10000000 creates in 776.54 seconds: 12877.56 creates/second

 real    12m56.557s
 user    0m7.861s
 sys     6m56.986s

After this patch:
 total: 10000000 creates in 691.92 seconds: 14452.46 creates/second

 real    11m31.936s
 user    0m7.785s
 sys     6m19.328s

So removing the index gained us about a minute and a half on the test or a
12% performance increase.

Signed-off-by: Mark Fasheh <mfasheh@versity.com>
This commit is contained in:
Mark Fasheh
2017-08-21 18:44:35 -05:00
committed by Zach Brown
parent 8135b18c76
commit d59367262d
6 changed files with 0 additions and 13 deletions

View File

@@ -244,7 +244,6 @@ struct scoutfs_segment_block {
/* inode index zone */
#define SCOUTFS_INODE_INDEX_CTIME_TYPE 1
#define SCOUTFS_INODE_INDEX_MTIME_TYPE 2
#define SCOUTFS_INODE_INDEX_SIZE_TYPE 3
#define SCOUTFS_INODE_INDEX_META_SEQ_TYPE 4
#define SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE 5

View File

@@ -586,10 +586,6 @@ void scoutfs_update_inode_item(struct inode *inode)
le64_to_cpu(sinode.ctime.sec),
le32_to_cpu(sinode.ctime.nsec),
si->item_ctime.tv_sec, si->item_ctime.tv_nsec) ?:
update_index(sb, si, ino, SCOUTFS_INODE_INDEX_MTIME_TYPE,
le64_to_cpu(sinode.mtime.sec),
le32_to_cpu(sinode.mtime.nsec),
si->item_mtime.tv_sec, si->item_mtime.tv_nsec) ?:
update_index(sb, si, ino, SCOUTFS_INODE_INDEX_SIZE_TYPE,
le64_to_cpu(sinode.size), 0, si->item_size, 0) ?:
update_index(sb, si, ino, SCOUTFS_INODE_INDEX_META_SEQ_TYPE,
@@ -657,9 +653,6 @@ static int remove_index_items(struct super_block *sb, u64 ino,
ret = remove_index(sb, ino, SCOUTFS_INODE_INDEX_CTIME_TYPE,
le64_to_cpu(sinode->ctime.sec),
le32_to_cpu(sinode->ctime.nsec)) ?:
remove_index(sb, ino, SCOUTFS_INODE_INDEX_MTIME_TYPE,
le64_to_cpu(sinode->mtime.sec),
le32_to_cpu(sinode->mtime.nsec)) ?:
remove_index(sb, ino, SCOUTFS_INODE_INDEX_SIZE_TYPE,
le64_to_cpu(sinode->size), 0) ?:
remove_index(sb, ino, SCOUTFS_INODE_INDEX_META_SEQ_TYPE,

View File

@@ -75,8 +75,6 @@ static long scoutfs_ioc_walk_inodes(struct file *file, unsigned long arg)
if (walk.index == SCOUTFS_IOC_WALK_INODES_CTIME)
type = SCOUTFS_INODE_INDEX_CTIME_TYPE;
else if (walk.index == SCOUTFS_IOC_WALK_INODES_MTIME)
type = SCOUTFS_INODE_INDEX_MTIME_TYPE;
else if (walk.index == SCOUTFS_IOC_WALK_INODES_SIZE)
type = SCOUTFS_INODE_INDEX_SIZE_TYPE;
else if (walk.index == SCOUTFS_IOC_WALK_INODES_META_SEQ)

View File

@@ -54,7 +54,6 @@ struct scoutfs_ioctl_walk_inodes {
enum {
SCOUTFS_IOC_WALK_INODES_CTIME = 0,
SCOUTFS_IOC_WALK_INODES_MTIME,
SCOUTFS_IOC_WALK_INODES_SIZE,
SCOUTFS_IOC_WALK_INODES_META_SEQ,
SCOUTFS_IOC_WALK_INODES_DATA_SEQ,

View File

@@ -137,7 +137,6 @@ int scoutfs_key_str_size(char *buf, struct scoutfs_key_buf *key, size_t size)
struct scoutfs_inode_index_key *ikey = key->data;
static char *type_strings[] = {
[SCOUTFS_INODE_INDEX_CTIME_TYPE] = "ctm",
[SCOUTFS_INODE_INDEX_MTIME_TYPE] = "mtm",
[SCOUTFS_INODE_INDEX_SIZE_TYPE] = "siz",
[SCOUTFS_INODE_INDEX_META_SEQ_TYPE] = "msq",
[SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE] = "dsq",

View File

@@ -463,7 +463,6 @@ int scoutfs_lock_inode_index(struct super_block *sb, int mode,
switch(type) {
case SCOUTFS_INODE_INDEX_CTIME_TYPE:
case SCOUTFS_INODE_INDEX_MTIME_TYPE:
major_mask = (1 << 5) - 1;
ino_mask = ~0ULL;
break;