Bug 166780 - [sysctl] [request] add sysctl for swap space used
Summary: [sysctl] [request] add sysctl for swap space used
Status: Closed Overcome By Events
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: Unspecified
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-09 07:30 UTC by Radim Kolar
Modified: 2014-09-02 17:28 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Radim Kolar 2012-04-09 07:30:15 UTC
currently its impossible to query swap space used or available via sysctl and it must be done via kvm calls which are inaccessible for languages like Java.

currently sysctl returns only this.
vm.swap_reserved: 768651264  <-- free space on disk holding swapfile
vm.swap_total: 629145600     <-- swapfile total size

i propose to add variable like

vm.swap_count:  <-- how many of vm.swap_total are currently in use

proposed sysctl name is similar to vm.stats.vm.v_* names.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2012-04-26 03:45:13 UTC
State Changed
From-To: open->suspended

awaiting someone to make a patch.
Comment 2 Radim Kolar 2012-04-26 16:46:17 UTC
Index: sys/vm/swap_pager.c
===================================================================
--- sys/vm/swap_pager.c (revision 234696)
+++ sys/vm/swap_pager.c (working copy)
@@ -2692,3 +2692,20 @@
             NODEV);
         return (0);
  }
+
+
+static int
+sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
+     int64_t swap_free = 0;
+     struct swdevt *sp;
+
+     mtx_lock(&sw_dev_mtx);
+     TAILQ_FOREACH(sp, &swtailq, sw_list) {
+       swap_free += sp->sw_nblks - sp->sw_used;
+     }
+     mtx_unlock(&sw_dev_mtx);
+     swap_free *= PAGE_SIZE;
+     return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
+}
+SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_S64|CTLFLAG_RD|CTLFLAG_MPSAFE,
+          NULL, 0, sysctl_vm_swap_free, "Q", "Amount of free swap 
storage.");
Comment 3 Eitan Adler freebsd_committer freebsd_triage 2012-04-26 20:10:40 UTC
Responsible Changed
From-To: freebsd-bugs->eadler

I'll take it.
Comment 4 Eitan Adler freebsd_committer freebsd_triage 2012-04-26 20:11:07 UTC
State Changed
From-To: suspended->open

Submitter provided requested information
Comment 5 Eitan Adler freebsd_committer freebsd_triage 2012-05-15 05:28:38 UTC
State Changed
From-To: open->analyzed

awaiting approval
Comment 6 dfilter service freebsd_committer freebsd_triage 2012-06-01 05:43:06 UTC
Author: eadler
Date: Fri Jun  1 04:42:52 2012
New Revision: 236380
URL: http://svn.freebsd.org/changeset/base/236380

Log:
  Add sysctl to query amount of swap space free
  
  PR:		kern/166780
  Submitted by:	Radim Kolar <hsn@sendmail.cz>
  Approved by:	cperciva
  MFC after:	1 week

Modified:
  head/sys/vm/swap_pager.c

Modified: head/sys/vm/swap_pager.c
==============================================================================
--- head/sys/vm/swap_pager.c	Fri Jun  1 04:34:49 2012	(r236379)
+++ head/sys/vm/swap_pager.c	Fri Jun  1 04:42:52 2012	(r236380)
@@ -2692,3 +2692,18 @@ swaponvp(struct thread *td, struct vnode
 	    NODEV);
 	return (0);
 }
+
+static int
+sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
+	int swap_free, used;
+	int total;
+
+	swap_pager_status(&total, &used);
+
+	swap_free = (total - used) * PAGE_SIZE;
+	return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
+}
+
+SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE,
+		NULL, 0, sysctl_vm_swap_free, "Q",
+		"Blocks of free swap storage.");
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 7 Eitan Adler freebsd_committer freebsd_triage 2012-06-01 08:03:40 UTC
State Changed
From-To: analyzed->patched

committed in r236380
Comment 8 dfilter service freebsd_committer freebsd_triage 2012-06-01 19:58:59 UTC
Author: eadler
Date: Fri Jun  1 18:58:50 2012
New Revision: 236417
URL: http://svn.freebsd.org/changeset/base/236417

Log:
  Revert r236380
  
  PR:		kern/166780
  Requested by:	many
  Approved by:	cperciva (implicit)

Modified:
  head/sys/vm/swap_pager.c

Modified: head/sys/vm/swap_pager.c
==============================================================================
--- head/sys/vm/swap_pager.c	Fri Jun  1 18:57:57 2012	(r236416)
+++ head/sys/vm/swap_pager.c	Fri Jun  1 18:58:50 2012	(r236417)
@@ -2692,18 +2692,3 @@ swaponvp(struct thread *td, struct vnode
 	    NODEV);
 	return (0);
 }
-
-static int
-sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
-	int swap_free, used;
-	int total;
-
-	swap_pager_status(&total, &used);
-
-	swap_free = (total - used) * PAGE_SIZE;
-	return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
-}
-
-SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE,
-		NULL, 0, sysctl_vm_swap_free, "Q",
-		"Blocks of free swap storage.");
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 9 Eitan Adler freebsd_committer freebsd_triage 2012-06-22 08:03:29 UTC
State Changed
From-To: patched->open

backed out
Comment 10 Eitan Adler freebsd_committer freebsd_triage 2012-11-08 20:54:41 UTC
Responsible Changed
From-To: eadler->freebsd-bugs

I won't be dealing with this PR for some time, so give it back to the 
pool
Comment 11 Radim Kolar 2014-09-02 17:28:31 UTC
i do not need this anymore, using different api to get desired value.