* [Patch 1/7] tabled: make two dump displays uniform
@ 2010-04-02 1:51 Pete Zaitcev
2010-04-02 17:27 ` Jeff Garzik
2010-04-06 16:57 ` Jeff Garzik
0 siblings, 2 replies; 5+ messages in thread
From: Pete Zaitcev @ 2010-04-02 1:51 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Project Hail List
> From: Jeff Garzik <jgarzik@pobox.com>
> Subject: Re: Tabled issues
> Date: Mon, 29 Mar 2010 15:32:33 -0400
> I asserted that the standard stats dump facility must dump
> all available statistics. That does not exclude other methods
> of stat(us) dumping. Your patch added new stats to the HTML-pretty
> version of output, but failed to add the new stats to the standard
> stat dump facility.
Your wish is my command.
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
---
server/replica.c | 28 +++++++++++++++++++++++++
server/server.c | 47 ++++++++++++++++++++++++++++++++++--------
server/status.c | 22 +------------------
server/storage.c | 50 +++++++++++++++++++++++++++++++++++++++++----
server/tabled.h | 3 ++
5 files changed, 117 insertions(+), 33 deletions(-)
commit 6bba495d750dcc7ebe63938b91d4bb22740879fe
Author: Pete Zaitcev <zaitcev@yahoo.com>
Date: Thu Apr 1 18:58:08 2010 -0600
Make signal+applog and HTTP displays uniform.
diff --git a/server/replica.c b/server/replica.c
index abdd647..e774824 100644
--- a/server/replica.c
+++ b/server/replica.c
@@ -871,6 +871,34 @@ void rep_start()
kscan_enabled = true;
}
+void rep_stats()
+{
+ bool running;
+ unsigned long kcnt;
+ time_t last;
+
+ applog(LOG_INFO, "REP: Jobs: queued %d active %d done %d",
+ queue.njobs, active.njobs, done.njobs);
+
+ g_mutex_lock(kscan_mutex);
+ running = kscan_running;
+ last = kscan_last;
+ kcnt = kscan_cnt;
+ g_mutex_unlock(kscan_mutex);
+
+ if (running) {
+ applog(LOG_INFO, "REP: run Active started %lu scanned %lu",
+ (long) last, kcnt);
+ } else {
+ if (last)
+ applog(LOG_INFO,
+ "REP: run Done started %lu scanned %lu",
+ (long) last, kcnt);
+ else
+ applog(LOG_INFO, "REP: run None");
+ }
+}
+
bool rep_status(struct client *cli, GList *content)
{
time_t now;
diff --git a/server/server.c b/server/server.c
index e0d785c..72db151 100644
--- a/server/server.c
+++ b/server/server.c
@@ -370,21 +370,50 @@ static void stats_signal(int signo)
write(tabled_srv.ev_pipe[1], &cmd, 1);
}
-#define X(stat) \
- applog(LOG_INFO, "STAT %s %lu", #stat, tabled_srv.stats.stat)
-
static void stats_dump(void)
{
- X(poll);
- X(event);
- X(tcp_accept);
- X(opt_write);
- applog(LOG_INFO, "State: TDB %s",
+ applog(LOG_INFO, "STATE: TDB %s",
state_name_tdb[tabled_srv.state_tdb]);
+ applog(LOG_INFO,
+ "STATS: poll %lu event %lu tcp_accept %lu opt_write %lu",
+ tabled_srv.stats.poll,
+ tabled_srv.stats.event,
+ tabled_srv.stats.tcp_accept,
+ tabled_srv.stats.opt_write);
stor_stats();
+ rep_stats();
}
-#undef X
+bool stat_status(struct client *cli, GList *content)
+{
+ char *str;
+
+ /*
+ * The loadavg is system dependent, we'll figure it out later.
+ * On Linux, applications read from /proc/loadavg.
+ */
+ if (asprintf(&str,
+ "<h1>Status</h1>"
+ "<p>Host %s port %s</p>\r\n",
+ tabled_srv.ourhost, tabled_srv.port) < 0)
+ return false;
+ content = g_list_append(content, str);
+ if (asprintf(&str,
+ "<p>State: TDB %s</p>\r\n",
+ state_name_tdb[tabled_srv.state_tdb]) < 0)
+ return false;
+ content = g_list_append(content, str);
+ if (asprintf(&str,
+ "<p>Stats: "
+ "poll %lu event %lu tcp_accept %lu opt_write %lu</p>\r\n",
+ tabled_srv.stats.poll,
+ tabled_srv.stats.event,
+ tabled_srv.stats.tcp_accept,
+ tabled_srv.stats.opt_write) < 0)
+ return false;
+ content = g_list_append(content, str);
+ return true;
+}
static bool cli_write_free(struct client *cli, struct client_write *tmp,
bool done)
diff --git a/server/status.c b/server/status.c
index bb67ac9..2029c09 100644
--- a/server/status.c
+++ b/server/status.c
@@ -114,25 +114,6 @@ out:
return false;
}
-static bool stat_status(struct client *cli, GList *content)
-{
- char *str;
-
- /*
- * The loadavg is system dependent, we'll figure it out later.
- * On Linux, applications read from /proc/loadavg.
- */
- if (asprintf(&str,
- "<h1>Status</h1>"
- "<p>Host %s port %s</p>\r\n"
- "<p>Stats: poll %lu event %lu</p>\r\n",
- tabled_srv.ourhost, tabled_srv.port,
- tabled_srv.stats.poll, tabled_srv.stats.event) < 0)
- return false;
- content = g_list_append(content, str);
- return true;
-}
-
static bool stat_root(struct client *cli)
{
GList *content = NULL;
@@ -149,7 +130,8 @@ static bool stat_root(struct client *cli)
if (!stat_status(cli, content))
goto out_err;
-
+ if (!stor_status(cli, content))
+ goto out_err;
if (!rep_status(cli, content))
goto out_err;
diff --git a/server/storage.c b/server/storage.c
index 913ef33..7dab625 100644
--- a/server/storage.c
+++ b/server/storage.c
@@ -533,11 +533,53 @@ void stor_stats()
g_mutex_lock(tabled_srv.bigmutex);
now = time(NULL);
list_for_each_entry(sn, &tabled_srv.all_stor, all_link) {
- applog(LOG_INFO, "SN nid %u %s last %lu (+ %ld) ref %d name %s",
- sn->id, sn->up? "up": "down",
- (long) sn->last_up, (long) (now - sn->last_up),
- sn->ref, sn->hostname);
+ if (sn->last_up) {
+ applog(LOG_INFO,
+ "SN: nid %u %s ref %d name %s last %lu (+ %ld)",
+ sn->id, sn->up? "up": "down",
+ sn->ref, sn->hostname,
+ (long) sn->last_up, (long) (now - sn->last_up));
+ } else {
+ applog(LOG_INFO,
+ "SN: nid %u %s ref %d name %s",
+ sn->id, sn->up? "up": "down",
+ sn->ref, sn->hostname);
+ }
}
g_mutex_unlock(tabled_srv.bigmutex);
}
+bool stor_status(struct client *cli, GList *content)
+{
+ struct storage_node *sn;
+ static char tag_down[] =
+ "<span style=\"background-color:red\">down</span>";
+ time_t now;
+ char *str;
+ int rc;
+
+ g_mutex_lock(tabled_srv.bigmutex);
+ now = time(NULL);
+ list_for_each_entry(sn, &tabled_srv.all_stor, all_link) {
+ if (sn->last_up) {
+ rc = asprintf(&str,
+ "SN: nid %u %s ref %d name %s"
+ " last %lu (+ %ld)<br />\r\n",
+ sn->id, sn->up? "up": tag_down,
+ sn->ref, sn->hostname,
+ (long) sn->last_up,
+ (long) (now - sn->last_up));
+ } else {
+ rc = asprintf(&str,
+ "SN: nid %u %s ref %d name %s<br />\r\n",
+ sn->id, sn->up? "up": tag_down,
+ sn->ref, sn->hostname);
+ }
+ if (rc < 0)
+ break;
+ content = g_list_append(content, str);
+ }
+ g_mutex_unlock(tabled_srv.bigmutex);
+ return true;
+}
+
diff --git a/server/tabled.h b/server/tabled.h
index 72bf20d..b4f51ed 100644
--- a/server/tabled.h
+++ b/server/tabled.h
@@ -315,6 +315,7 @@ extern void req_sign(struct http_req *req, const char *bucket, const char *key,
extern int debugging;
extern struct server tabled_srv;
extern struct compiled_pat patterns[];
+extern bool stat_status(struct client *cli, GList *content);
extern bool cli_err(struct client *cli, enum errcode code);
extern bool cli_err_write(struct client *cli, char *hdr, char *content);
extern bool cli_resp_xml(struct client *cli, int http_status, GList *content);
@@ -357,6 +358,7 @@ extern void stor_add_node(uint32_t nid, const char *hostname,
const char *portstr, struct geo *locp);
extern int stor_node_check(struct storage_node *stn);
extern void stor_stats(void);
+extern bool stor_status(struct client *cli, GList *content);
/* storparse.c */
extern void stor_parse(char *fname, const char *text, size_t len);
@@ -364,6 +366,7 @@ extern void stor_parse(char *fname, const char *text, size_t len);
/* replica.c */
extern void rep_init(struct event_base *ev_base);
extern void rep_start(void);
+extern void rep_stats(void);
extern bool rep_status(struct client *cli, GList *content);
#endif /* __TABLED_H__ */
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [Patch 1/7] tabled: make two dump displays uniform
2010-04-02 1:51 [Patch 1/7] tabled: make two dump displays uniform Pete Zaitcev
@ 2010-04-02 17:27 ` Jeff Garzik
2010-04-02 18:23 ` Pete Zaitcev
2010-04-06 16:57 ` Jeff Garzik
1 sibling, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2010-04-02 17:27 UTC (permalink / raw)
To: Pete Zaitcev; +Cc: Project Hail List
These patch series look good from a quick glance. Will apply after
Easter holiday...
Jeff
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch 1/7] tabled: make two dump displays uniform
2010-04-02 1:51 [Patch 1/7] tabled: make two dump displays uniform Pete Zaitcev
2010-04-02 17:27 ` Jeff Garzik
@ 2010-04-06 16:57 ` Jeff Garzik
2010-04-06 18:29 ` Pete Zaitcev
1 sibling, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2010-04-06 16:57 UTC (permalink / raw)
To: Pete Zaitcev; +Cc: Project Hail List
On 04/01/2010 09:51 PM, Pete Zaitcev wrote:
>> From: Jeff Garzik<jgarzik@pobox.com>
>> Subject: Re: Tabled issues
>> Date: Mon, 29 Mar 2010 15:32:33 -0400
>
>> I asserted that the standard stats dump facility must dump
>> all available statistics. That does not exclude other methods
>> of stat(us) dumping. Your patch added new stats to the HTML-pretty
>> version of output, but failed to add the new stats to the standard
>> stat dump facility.
>
> Your wish is my command.
>
> Signed-off-by: Pete Zaitcev<zaitcev@redhat.com>
>
> ---
> server/replica.c | 28 +++++++++++++++++++++++++
> server/server.c | 47 ++++++++++++++++++++++++++++++++++--------
> server/status.c | 22 +------------------
> server/storage.c | 50 +++++++++++++++++++++++++++++++++++++++++----
> server/tabled.h | 3 ++
> 5 files changed, 117 insertions(+), 33 deletions(-)
applied, thanks. I will endeavor to make the stats dump more like nfs4d
in the future, FWIW.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch 1/7] tabled: make two dump displays uniform
2010-04-06 16:57 ` Jeff Garzik
@ 2010-04-06 18:29 ` Pete Zaitcev
0 siblings, 0 replies; 5+ messages in thread
From: Pete Zaitcev @ 2010-04-06 18:29 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Project Hail List
On Tue, 06 Apr 2010 12:57:57 -0400
Jeff Garzik <jeff@garzik.org> wrote:
> applied, thanks. I will endeavor to make the stats dump more like nfs4d
> in the future, FWIW.
I was going to look into it too, but there's now some stuff
I urgently need to address in Darcy's report on tabled's faults.
So I only wrote nfs4 into the endless TODO.
-- Pete
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-04-06 18:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-02 1:51 [Patch 1/7] tabled: make two dump displays uniform Pete Zaitcev
2010-04-02 17:27 ` Jeff Garzik
2010-04-02 18:23 ` Pete Zaitcev
2010-04-06 16:57 ` Jeff Garzik
2010-04-06 18:29 ` Pete Zaitcev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.