From 7510ef2081e3787e97b815e69a676bd6fc75a9cd Mon Sep 17 00:00:00 2001
From: Brian Tiger Chow <brian.holderchow@gmail.com>
Date: Wed, 29 Oct 2014 18:23:09 -0700
Subject: [PATCH] feat(cmd/ipfs1) add mem profiling in debug mode

TODO add memory profiling to ipfs2
---
 cmd/ipfs/ipfs.go | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/cmd/ipfs/ipfs.go b/cmd/ipfs/ipfs.go
index 57b48c33f..1494f68c2 100644
--- a/cmd/ipfs/ipfs.go
+++ b/cmd/ipfs/ipfs.go
@@ -17,6 +17,8 @@ import (
 	u "github.com/jbenet/go-ipfs/util"
 )
 
+const heapProfile = "ipfs.mprof"
+
 // The IPFS command tree. It is an instance of `commander.Command`.
 var CmdIpfs = &commander.Command{
 	UsageLine: "ipfs [<flags>] <command> [<args>]",
@@ -117,6 +119,13 @@ func main() {
 		}
 		os.Exit(1)
 	}
+
+	if u.Debug {
+		err := writeHeapProfileToFile()
+		if err != nil {
+			log.Critical(err)
+		}
+	}
 	return
 }
 
@@ -220,3 +229,12 @@ func setupDaemon(confdir string, node *core.IpfsNode) (*daemon.DaemonListener, e
 	go dl.Listen()
 	return dl, nil
 }
+
+func writeHeapProfileToFile() error {
+	mprof, err := os.Create(heapProfile)
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer mprof.Close()
+	return pprof.WriteHeapProfile(mprof)
+}
-- 
GitLab