Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162996143
D56029.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D56029.diff
View Options
diff --git a/sys/dev/hwpmc/hwpmc_logging.c b/sys/dev/hwpmc/hwpmc_logging.c
--- a/sys/dev/hwpmc/hwpmc_logging.c
+++ b/sys/dev/hwpmc/hwpmc_logging.c
@@ -58,6 +58,7 @@
#include <sys/uio.h>
#include <sys/unistd.h>
#include <sys/vnode.h>
+#include <sys/syslog.h>
#if defined(__i386__) || defined(__amd64__)
#include <machine/clock.h>
@@ -1236,24 +1237,39 @@
struct pmclog_buffer *plb;
int domain, ncpus, total;
- if (pmclog_buffer_size <= 0 || pmclog_buffer_size > 16*1024) {
- (void) printf("hwpmc: tunable logbuffersize=%d must be "
- "greater than zero and less than or equal to 16MB.\n",
- pmclog_buffer_size);
+ if (pmclog_buffer_size <= 0 ||
+ pmclog_buffer_size > PMC_LOG_BUFFER_SIZE_MAX) {
+ log(LOG_WARNING,
+ "hwpmc: logbuffersize=%d must be greater than zero "
+ "and less than or equal to %d, resetting to %d\n",
+ pmclog_buffer_size, PMC_LOG_BUFFER_SIZE_MAX,
+ PMC_LOG_BUFFER_SIZE);
+
pmclog_buffer_size = PMC_LOG_BUFFER_SIZE;
}
if (pmc_nlogbuffers_pcpu <= 0) {
- (void) printf("hwpmc: tunable nlogbuffers=%d must be greater "
- "than zero.\n", pmc_nlogbuffers_pcpu);
+ log(LOG_WARNING,
+ "hwpmc: nbuffers_pcpu=%d must be greater than zero, "
+ "resetting to %d\n",
+ pmc_nlogbuffers_pcpu, PMC_NLOGBUFFERS_PCPU);
+
pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU;
}
- if (pmc_nlogbuffers_pcpu*pmclog_buffer_size > 32*1024) {
- (void) printf("hwpmc: memory allocated pcpu must be less than 32MB (is %dK).\n",
- pmc_nlogbuffers_pcpu*pmclog_buffer_size);
+
+ if (pmc_nlogbuffers_pcpu * pmclog_buffer_size >
+ PMC_NLOGBUFFERS_PCPU_MEM_MAX) {
+ log(LOG_WARNING,
+ "hwpmc: nbuffers_pcpu=%d * logbuffersize=%d exceeds "
+ "%dMB per CPU limit, resetting to defaults (%d * %d)\n",
+ pmc_nlogbuffers_pcpu, pmclog_buffer_size,
+ PMC_NLOGBUFFERS_PCPU_MEM_MAX / 1024,
+ PMC_NLOGBUFFERS_PCPU, PMC_LOG_BUFFER_SIZE);
+
pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU;
pmclog_buffer_size = PMC_LOG_BUFFER_SIZE;
}
+
for (domain = 0; domain < vm_ndomains; domain++) {
ncpus = pmc_dom_hdrs[domain]->pdbh_ncpus;
total = ncpus * pmc_nlogbuffers_pcpu;
@@ -1270,6 +1286,7 @@
pmc_plb_rele_unlocked(plb);
}
}
+
mtx_init(&pmc_kthread_mtx, "pmc-kthread", "pmc-sleep", MTX_DEF);
}
diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h
--- a/sys/sys/pmc.h
+++ b/sys/sys/pmc.h
@@ -661,7 +661,9 @@
#define PMC_HASH_SIZE 1024
#define PMC_MTXPOOL_SIZE 2048
#define PMC_LOG_BUFFER_SIZE 256
+#define PMC_LOG_BUFFER_SIZE_MAX (16 * 1024)
#define PMC_NLOGBUFFERS_PCPU 32
+#define PMC_NLOGBUFFERS_PCPU_MEM_MAX (32 * 1024)
#define PMC_NSAMPLES 256
#define PMC_CALLCHAIN_DEPTH 128
#define PMC_THREADLIST_MAX 128
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jul 20, 12:50 AM (1 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35238334
Default Alt Text
D56029.diff (2 KB)
Attached To
Mode
D56029: hwpmc: improve diagnostic messages for invalid tunables
Attached
Detach File
Event Timeline
Log In to Comment