Skip to contentSkip to conversation

[2.4] Miniscule block and kstat optimisation

PATCH New Alan Swanson 1 participant 1 message Jan 20, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 [2.4] Miniscule block and kstat optimisation

Involving a (very) tiny speed-up in ll_rw_blk, by shifting the calculation to proc, and saving memory from a now unused array.

It's basically a very small subset of my diskio patch for /proc/stat in the 2.4 kernel.

Can someone pass this to Marcelo as there are no real maintainers for the files touched. I've tried submitting directly but without response.

Signature · 3 lines
Alan.

"One must never be purposelessnessnesslessness."
drivers/block/ll_rw_blk.c +0 -1
diff -ur linux-2.4.23-pre3/drivers/block/ll_rw_blk.c linux-2.4.23-pre3-kstat/drivers/block/ll_rw_blk.c
@@ -701,7 +701,6 @@
 	if ((index >= DK_MAX_DISK) || (major >= DK_MAX_MAJOR))
 		return;
 
-	kstat.dk_drive[major][index] += new_io;
 	if (rw == READ) {
 		kstat.dk_drive_rio[major][index] += new_io;
 		kstat.dk_drive_rblk[major][index] += nr_sectors;
fs/proc/proc_misc.c +4 -2
diff -ur linux-2.4.23-pre3/fs/proc/proc_misc.c linux-2.4.23-pre3-kstat/fs/proc/proc_misc.c
@@ -357,14 +357,16 @@
 
 	for (major = 0; major < DK_MAX_MAJOR; major++) {
 		for (disk = 0; disk < DK_MAX_DISK; disk++) {
-			int active = kstat.dk_drive[major][disk] +
+			int active = kstat.dk_drive_rio[major][disk] +
+				kstat.dk_drive_wio[major][disk] +
 				kstat.dk_drive_rblk[major][disk] +
 				kstat.dk_drive_wblk[major][disk];
 			if (active)
 				proc_sprintf(page, &off, &len,
 					"(%u,%u):(%u,%u,%u,%u,%u) ",
 					major, disk,
-					kstat.dk_drive[major][disk],
+					kstat.dk_drive_rio[major][disk] +
+					kstat.dk_drive_wio[major][disk],
 					kstat.dk_drive_rio[major][disk],
 					kstat.dk_drive_rblk[major][disk],
 					kstat.dk_drive_wio[major][disk],
include/linux/kernel_stat.h +0 -1
diff -ur linux-2.4.23-pre3/include/linux/kernel_stat.h linux-2.4.23-pre3-kstat/include/linux/kernel_stat.h
@@ -19,7 +19,6 @@
 	unsigned int per_cpu_user[NR_CPUS],
 	             per_cpu_nice[NR_CPUS],
 	             per_cpu_system[NR_CPUS];
-	unsigned int dk_drive[DK_MAX_MAJOR][DK_MAX_DISK];
 	unsigned int dk_drive_rio[DK_MAX_MAJOR][DK_MAX_DISK];
 	unsigned int dk_drive_wio[DK_MAX_MAJOR][DK_MAX_DISK];
 	unsigned int dk_drive_rblk[DK_MAX_MAJOR][DK_MAX_DISK];