From d59367262d585a67ae8e9d99ae8ebad5a7db0c3f Mon Sep 17 00:00:00 2001 From: Mark Fasheh Date: Mon, 21 Aug 2017 18:44:35 -0500 Subject: [PATCH] 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 --- kmod/src/format.h | 1 - kmod/src/inode.c | 7 ------- kmod/src/ioctl.c | 2 -- kmod/src/ioctl.h | 1 - kmod/src/key.c | 1 - kmod/src/lock.c | 1 - 6 files changed, 13 deletions(-) diff --git a/kmod/src/format.h b/kmod/src/format.h index b532cccc..2d3c449d 100644 --- a/kmod/src/format.h +++ b/kmod/src/format.h @@ -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 diff --git a/kmod/src/inode.c b/kmod/src/inode.c index 4a291e74..f7a81c13 100644 --- a/kmod/src/inode.c +++ b/kmod/src/inode.c @@ -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, diff --git a/kmod/src/ioctl.c b/kmod/src/ioctl.c index a947bc6a..4780c9b3 100644 --- a/kmod/src/ioctl.c +++ b/kmod/src/ioctl.c @@ -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) diff --git a/kmod/src/ioctl.h b/kmod/src/ioctl.h index c8a267b5..52b0b4d4 100644 --- a/kmod/src/ioctl.h +++ b/kmod/src/ioctl.h @@ -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, diff --git a/kmod/src/key.c b/kmod/src/key.c index 85091bbc..da2b4ea5 100644 --- a/kmod/src/key.c +++ b/kmod/src/key.c @@ -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", diff --git a/kmod/src/lock.c b/kmod/src/lock.c index 0d5455fb..9ce58738 100644 --- a/kmod/src/lock.c +++ b/kmod/src/lock.c @@ -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;