Skip to contentSkip to conversation

aoe: performance enhancements through v83

PATCH New Ed Cashin 1 participant 4 messages Jul 3, 2013

Subsystems (2)
lore
Share & tools
lore

Ed Cashin

author
#0 lore raw

cover aoe: performance enhancements through v83

This patch series applies to today's linux-next/akpm, commit cbbc4a736dfca9a1ade0b13219d98d12601c1c06.

This second submission includes a comment in the first patch suggested by Andrew Morton.

Ed L. Cashin (3):
aoe: perform I/O completions in parallel
aoe: update copyright date
aoe: update internal version number to v83

 drivers/block/aoe/aoe.h    |   11 ++-
 drivers/block/aoe/aoecmd.c |  154 ++++++++++++++++++++++++++++++++++++--------
 drivers/block/aoe/aoedev.c |    3 +-
 drivers/block/aoe/aoenet.c |    7 +-
 4 files changed, 139 insertions(+), 36 deletions(-)
author
#1 lore raw

PATCH 1/3 aoe: perform I/O completions in parallel

Some users have a large AoE target while others like to use many AoE targets at the same time. In the latter case, there is an opportunity to greatly improve aggregate throughput by allowing different threads to complete the I/O associated with each target. For 36 targets, 4 KiB read throughput roughly doubles, for example, with these changes in place.

---
 drivers/block/aoe/aoe.h    |    7 ++-
 drivers/block/aoe/aoecmd.c |  152 ++++++++++++++++++++++++++++++++++++--------
 drivers/block/aoe/aoedev.c |    1 -
 drivers/block/aoe/aoenet.c |    5 +-
 4 files changed, 134 insertions(+), 31 deletions(-)
drivers/block/aoe/aoe.h +5 -2
index 1756494..c969852 100644
@@ -196,9 +196,11 @@ struct ktstate {
 	struct completion rendez;
 	struct task_struct *task;
 	wait_queue_head_t *waitq;
-	int (*fn) (void);
-	char *name;
+	int (*fn) (int);
+	char name[12];
 	spinlock_t *lock;
+	int id;
+	int active;
 };
 
 int aoeblk_init(void);
@@ -222,6 +224,7 @@ int aoecmd_init(void);
 struct sk_buff *aoecmd_ata_id(struct aoedev *);
 void aoe_freetframe(struct frame *);
 void aoe_flush_iocq(void);
+void aoe_flush_iocq_by_index(int);
 void aoe_end_request(struct aoedev *, struct request *, int);
 int aoe_ktstart(struct ktstate *k);
 void aoe_ktstop(struct ktstate *k);
drivers/block/aoe/aoecmd.c +126 -26

226 lines not on this page · raw message

drivers/block/aoe/aoedev.c +0 -1
index 98f2965..92201b6 100644
@@ -518,7 +518,6 @@ void
 aoedev_exit(void)
 {
 	flush_scheduled_work();
-	aoe_flush_iocq();
 	flush(NULL, 0, EXITING);
 }
 
drivers/block/aoe/aoenet.c +3 -2
index 71d3ea8..4af5f06 100644
@@ -52,7 +52,7 @@ static struct sk_buff_head skbtxq;
 
 /* enters with txlock held */
 static int
-tx(void) __must_hold(&txlock)
+tx(int id) __must_hold(&txlock)
 {
 	struct sk_buff *skb;
 	struct net_device *ifp;
@@ -205,7 +205,8 @@ aoenet_init(void)
 	kts.lock = &txlock;
 	kts.fn = tx;
 	kts.waitq = &txwq;
-	kts.name = "aoe_tx";
+	kts.id = 0;
+	snprintf(kts.name, sizeof(kts.name), "aoe_tx%d", kts.id);
 	if (aoe_ktstart(&kts))
 		return -EAGAIN;
 	dev_add_pack(&aoe_pt);
Signature · 1 line
1.7.1
author
#2 lore raw

PATCH 2/3 aoe: update copyright date

In reply to Ed Cashin
---
 drivers/block/aoe/aoe.h    |    2 +-
 drivers/block/aoe/aoecmd.c |    2 +-
 drivers/block/aoe/aoedev.c |    2 +-
 drivers/block/aoe/aoenet.c |    2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
drivers/block/aoe/aoe.h +1 -1
index c969852..2284f89 100644
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
+/* Copyright (c) 2013 Coraid, Inc.  See COPYING for GPL terms. */
 #define VERSION "81"
 #define AOE_MAJOR 152
 #define DEVICE_NAME "aoe"
drivers/block/aoe/aoecmd.c +1 -1
index 19955dd..99cb944 100644
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
+/* Copyright (c) 2013 Coraid, Inc.  See COPYING for GPL terms. */
 /*
  * aoecmd.c
  * Filesystem request handling methods
drivers/block/aoe/aoedev.c +1 -1
index 92201b6..784c92e 100644
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
+/* Copyright (c) 2013 Coraid, Inc.  See COPYING for GPL terms. */
 /*
  * aoedev.c
  * AoE device utility functions; maintains device list.
drivers/block/aoe/aoenet.c +1 -1
index 4af5f06..63773a9 100644
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
+/* Copyright (c) 2013 Coraid, Inc.  See COPYING for GPL terms. */
 /*
  * aoenet.c
  * Ethernet portion of AoE driver
Signature · 1 line
1.7.1
author
#3 lore raw

PATCH 3/3 aoe: update internal version number to v83

In reply to Ed Cashin
---
 drivers/block/aoe/aoe.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/block/aoe/aoe.h +1 -1
index 2284f89..025c41d 100644
@@ -1,5 +1,5 @@
 /* Copyright (c) 2013 Coraid, Inc.  See COPYING for GPL terms. */
-#define VERSION "81"
+#define VERSION "83"
 #define AOE_MAJOR 152
 #define DEVICE_NAME "aoe"
 
Signature · 1 line
1.7.1