From 9f00b38e2d2776f928ba31941080c558755bf7eb Mon Sep 17 00:00:00 2001
From: Daniel J Blueman <daniel@numascale.com>
Date: Fri, 4 Mar 2016 16:12:27 +0800
Subject: [PATCH] Reduce OS noise by increasing various device polling
 intervals

Signed-off-by: Daniel J Blueman <daniel@numascale.com>
---
 drivers/edac/edac_pci_sysfs.c                 | 2 +-
 drivers/net/ethernet/broadcom/bnx2.c          | 2 +-
 drivers/net/ethernet/broadcom/bnx2.h          | 2 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c | 2 +-
 drivers/net/ethernet/intel/e1000e/netdev.c    | 2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
 drivers/scsi/mpt3sas/mpt3sas_base.c           | 2 +-
 drivers/usb/host/ohci-hcd.c                   | 2 +-
 drivers/video/console/fbcon.c                 | 8 ++++++--
 mm/huge_memory.c                              | 2 +-
 mm/page-writeback.c                           | 2 +-
 mm/slab.c                                     | 2 +-
 mm/vmstat.c                                   | 2 +-
 net/ipv4/arp.c                                | 2 +-
 net/ipv4/route.c                              | 2 +-
 net/sched/sch_generic.c                       | 2 +-
 16 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/drivers/edac/edac_pci_sysfs.c b/drivers/edac/edac_pci_sysfs.c
index 24d877f..2b685d1 100644
--- a/drivers/edac/edac_pci_sysfs.c
+++ b/drivers/edac/edac_pci_sysfs.c
@@ -21,7 +21,7 @@ static int check_pci_errors;		/* default NO check PCI parity */
 static int edac_pci_panic_on_pe;	/* default NO panic on PCI Parity */
 static int edac_pci_log_pe = 1;		/* log PCI parity errors */
 static int edac_pci_log_npe = 1;	/* log PCI non-parity error errors */
-static int edac_pci_poll_msec = 1000;	/* one second workq period */
+static int edac_pci_poll_msec = 30000;	/* one second workq period */
 
 static atomic_t pci_parity_count = ATOMIC_INIT(0);
 static atomic_t pci_nonparity_count = ATOMIC_INIT(0);
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 8fc3f3c..7e3ddc7 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -69,7 +69,7 @@
 #define RUN_AT(x) (jiffies + (x))
 
 /* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT  (5*HZ)
+#define TX_TIMEOUT  (120*HZ)
 
 static char version[] =
 	"QLogic " DRV_MODULE_NAME " Gigabit Ethernet Driver v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
diff --git a/drivers/net/ethernet/broadcom/bnx2.h b/drivers/net/ethernet/broadcom/bnx2.h
index 380234d..94387aa4 100644
--- a/drivers/net/ethernet/broadcom/bnx2.h
+++ b/drivers/net/ethernet/broadcom/bnx2.h
@@ -6831,7 +6831,7 @@ struct bnx2 {
 	/* End of fields used in the performance code paths. */
 
 	unsigned int		current_interval;
-#define BNX2_TIMER_INTERVAL		HZ
+#define BNX2_TIMER_INTERVAL		15*HZ
 #define BNX2_SERDES_AN_TIMEOUT		(HZ / 3)
 #define BNX2_SERDES_FORCED_TIMEOUT	(HZ / 10)
 
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index fd7be86..43ea16f 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -1029,7 +1029,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	netdev->netdev_ops = &e1000_netdev_ops;
 	e1000_set_ethtool_ops(netdev);
-	netdev->watchdog_timeo = 5 * HZ;
+	netdev->watchdog_timeo = 30 * HZ;
 	netif_napi_add(netdev, &adapter->napi, e1000_clean, 64);
 
 	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 0a854a4..d92257b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -7068,7 +7068,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	/* construct the net_device struct */
 	netdev->netdev_ops = &e1000e_netdev_ops;
 	e1000e_set_ethtool_ops(netdev);
-	netdev->watchdog_timeo = 5 * HZ;
+	netdev->watchdog_timeo = 30 * HZ;
 	netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64);
 	strlcpy(netdev->name, pci_name(pdev), sizeof(netdev->name));
 
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index aed8d02..57ab451 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -8678,7 +8678,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	netdev->netdev_ops = &ixgbe_netdev_ops;
 	ixgbe_set_ethtool_ops(netdev);
-	netdev->watchdog_timeo = 5 * HZ;
+	netdev->watchdog_timeo = 30 * HZ;
 	strlcpy(netdev->name, pci_name(pdev), sizeof(netdev->name));
 
 	/* Setup hw api */
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 11393eb..9e70637 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -66,7 +66,7 @@
 static MPT_CALLBACK	mpt_callbacks[MPT_MAX_CALLBACKS];
 
 
-#define FAULT_POLLING_INTERVAL 1000 /* in milliseconds */
+#define FAULT_POLLING_INTERVAL 30000 /* in milliseconds */
 
  /* maximum controller queue depth */
 #define MAX_HBA_QUEUE_DEPTH	30000
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 760cb57..06403ca 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -72,7 +72,7 @@
 static const char	hcd_name [] = "ohci_hcd";
 
 #define	STATECHANGE_DELAY	msecs_to_jiffies(300)
-#define	IO_WATCHDOG_DELAY	msecs_to_jiffies(275)
+#define	IO_WATCHDOG_DELAY	msecs_to_jiffies(10000)
 
 #include "ohci.h"
 #include "pci-quirks.h"
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 92f3949..738b74d 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -395,7 +395,7 @@ static void fb_flashcursor(struct work_struct *work)
 		    get_color(vc, info, c, 0));
 	console_unlock();
 }
-
+#ifdef SLOW
 static void cursor_timer_handler(unsigned long dev_addr)
 {
 	struct fb_info *info = (struct fb_info *) dev_addr;
@@ -404,9 +404,10 @@ static void cursor_timer_handler(unsigned long dev_addr)
 	queue_work(system_power_efficient_wq, &info->queue);
 	mod_timer(&ops->cursor_timer, jiffies + ops->cur_blink_jiffies);
 }
-
+#endif
 static void fbcon_add_cursor_timer(struct fb_info *info)
 {
+#ifdef SLOW
 	struct fbcon_ops *ops = info->fbcon_par;
 
 	if ((!info->queue.func || info->queue.func == fb_flashcursor) &&
@@ -422,10 +423,12 @@ static void fbcon_add_cursor_timer(struct fb_info *info)
 		add_timer(&ops->cursor_timer);
 		ops->flags |= FBCON_FLAGS_CURSOR_TIMER;
 	}
+#endif
 }
 
 static void fbcon_del_cursor_timer(struct fb_info *info)
 {
+#ifdef SLOW
 	struct fbcon_ops *ops = info->fbcon_par;
 
 	if (info->queue.func == fb_flashcursor &&
@@ -433,6 +436,7 @@ static void fbcon_del_cursor_timer(struct fb_info *info)
 		del_timer_sync(&ops->cursor_timer);
 		ops->flags &= ~FBCON_FLAGS_CURSOR_TIMER;
 	}
+#endif
 }
 
 #ifndef MODULE
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 62fe06b..7e8e1cb 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -54,7 +54,7 @@ unsigned long transparent_hugepage_flags __read_mostly =
 static unsigned int khugepaged_pages_to_scan __read_mostly = HPAGE_PMD_NR*8;
 static unsigned int khugepaged_pages_collapsed;
 static unsigned int khugepaged_full_scans;
-static unsigned int khugepaged_scan_sleep_millisecs __read_mostly = 10000;
+static unsigned int khugepaged_scan_sleep_millisecs __read_mostly = 120000;
 /* during fragmentation poll the hugepage allocator once every minute */
 static unsigned int khugepaged_alloc_sleep_millisecs __read_mostly = 60000;
 static struct task_struct *khugepaged_thread __read_mostly;
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index d15d88c..9e6465c 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -98,7 +98,7 @@ unsigned long vm_dirty_bytes;
 /*
  * The interval between `kupdate'-style writebacks
  */
-unsigned int dirty_writeback_interval = 5 * 100; /* centiseconds */
+unsigned int dirty_writeback_interval = 30 * 100; /* centiseconds */
 
 EXPORT_SYMBOL_GPL(dirty_writeback_interval);
 
diff --git a/mm/slab.c b/mm/slab.c
index 4765c97..07cd570 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -654,7 +654,7 @@ static void start_cpu_timer(int cpu)
 		init_reap_node(cpu);
 		INIT_DEFERRABLE_WORK(reap_work, cache_reap);
 		schedule_delayed_work_on(cpu, reap_work,
-					__round_jiffies_relative(HZ, cpu));
+					__round_jiffies_relative(15 * HZ, cpu));
 	}
 }
 
diff --git a/mm/vmstat.c b/mm/vmstat.c
index c54fd29..9ed98e4 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1381,7 +1381,7 @@ static const struct file_operations proc_vmstat_file_operations = {
 #ifdef CONFIG_SMP
 static struct workqueue_struct *vmstat_wq;
 static DEFINE_PER_CPU(struct delayed_work, vmstat_work);
-int sysctl_stat_interval __read_mostly = HZ;
+int sysctl_stat_interval __read_mostly = 30 * HZ;
 static cpumask_var_t cpu_stat_off;
 
 static void vmstat_update(struct work_struct *w)
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 59b3e0e..3457f89 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -178,7 +178,7 @@ struct neigh_table arp_tbl = {
 			[NEIGH_VAR_LOCKTIME] = 1 * HZ,
 		},
 	},
-	.gc_interval	= 30 * HZ,
+	.gc_interval	= 300 * HZ,
 	.gc_thresh1	= 128,
 	.gc_thresh2	= 512,
 	.gc_thresh3	= 1024,
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 02c6229..3e573c4 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2619,7 +2619,7 @@ void ip_rt_multicast_event(struct in_device *in_dev)
 }
 
 #ifdef CONFIG_SYSCTL
-static int ip_rt_gc_interval __read_mostly  = 60 * HZ;
+static int ip_rt_gc_interval __read_mostly  = 300 * HZ;
 static int ip_rt_gc_min_interval __read_mostly	= HZ / 2;
 static int ip_rt_gc_elasticity __read_mostly	= 8;
 
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 16bc83b..dff29e3 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -318,7 +318,7 @@ void __netdev_watchdog_up(struct net_device *dev)
 {
 	if (dev->netdev_ops->ndo_tx_timeout) {
 		if (dev->watchdog_timeo <= 0)
-			dev->watchdog_timeo = 5*HZ;
+			dev->watchdog_timeo = 120*HZ;
 		if (!mod_timer(&dev->watchdog_timer,
 			       round_jiffies(jiffies + dev->watchdog_timeo)))
 			dev_hold(dev);
-- 
2.5.0

