aboutsummaryrefslogtreecommitdiff
path: root/weed-fs/src
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2012-10-06 10:50:52 -0700
committerChris Lu <chris.lu@gmail.com>2012-10-06 10:50:52 -0700
commitba55296b18007cdc86359a3dcdba55764afc8049 (patch)
tree590ae23187227c763d8a2426fad2f22e0610a2fe /weed-fs/src
parent45a6323a4be3a34cc3653a75d9f3fe827bd07a9a (diff)
downloadseaweedfs-ba55296b18007cdc86359a3dcdba55764afc8049.tar.xz
seaweedfs-ba55296b18007cdc86359a3dcdba55764afc8049.zip
optionally change the maximun number of CPUs
Diffstat (limited to 'weed-fs/src')
-rw-r--r--weed-fs/src/cmd/weed/master.go12
-rw-r--r--weed-fs/src/cmd/weed/volume.go14
2 files changed, 19 insertions, 7 deletions
diff --git a/weed-fs/src/cmd/weed/master.go b/weed-fs/src/cmd/weed/master.go
index a87c8f312..d514c0847 100644
--- a/weed-fs/src/cmd/weed/master.go
+++ b/weed-fs/src/cmd/weed/master.go
@@ -8,6 +8,7 @@ import (
"pkg/replication"
"pkg/storage"
"pkg/topology"
+ "runtime"
"strconv"
"strings"
"time"
@@ -35,6 +36,7 @@ var (
confFile = cmdMaster.Flag.String("conf", "/etc/weedfs/weedfs.conf", "xml configuration file")
defaultRepType = cmdMaster.Flag.String("defaultReplicationType", "000", "Default replication type if not specified.")
mReadTimeout = cmdMaster.Flag.Int("readTimeout", 5, "connection read timeout in seconds")
+ mMaxCpu = cmdVolume.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs")
)
var topo *topology.Topology
@@ -107,9 +109,9 @@ func dirJoinHandler(w http.ResponseWriter, r *http.Request) {
}
func dirStatusHandler(w http.ResponseWriter, r *http.Request) {
- m := make(map[string]interface{})
- m["Version"] = VERSION
- m["Topology"] = topo.ToMap()
+ m := make(map[string]interface{})
+ m["Version"] = VERSION
+ m["Topology"] = topo.ToMap()
writeJson(w, r, m)
}
@@ -133,6 +135,10 @@ func volumeGrowHandler(w http.ResponseWriter, r *http.Request) {
}
func runMaster(cmd *Command, args []string) bool {
+ if *mMaxCpu < 1 {
+ *mMaxCpu = runtime.NumCPU()
+ }
+ runtime.GOMAXPROCS(*mMaxCpu)
topo = topology.NewTopology("topo", *confFile, *metaFolder, "weed", uint64(*volumeSizeLimitMB)*1024*1024, *mpulse)
vg = replication.NewDefaultVolumeGrowth()
log.Println("Volume Size Limit is", *volumeSizeLimitMB, "MB")
diff --git a/weed-fs/src/cmd/weed/volume.go b/weed-fs/src/cmd/weed/volume.go
index 38946396e..046272ee7 100644
--- a/weed-fs/src/cmd/weed/volume.go
+++ b/weed-fs/src/cmd/weed/volume.go
@@ -9,6 +9,7 @@ import (
"os"
"pkg/operation"
"pkg/storage"
+ "runtime"
"strconv"
"strings"
"time"
@@ -36,15 +37,16 @@ var (
vpulse = cmdVolume.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats, must be smaller than the master's setting")
maxVolumeCount = cmdVolume.Flag.Int("max", 5, "maximum number of volumes")
vReadTimeout = cmdVolume.Flag.Int("readTimeout", 5, "connection read timeout in seconds")
+ vMaxCpu = cmdVolume.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs")
store *storage.Store
)
func statusHandler(w http.ResponseWriter, r *http.Request) {
- m := make(map[string]interface{})
- m["Version"] = VERSION
- m["Volumes"] = store.Status()
- writeJson(w, r, m)
+ m := make(map[string]interface{})
+ m["Version"] = VERSION
+ m["Volumes"] = store.Status()
+ writeJson(w, r, m)
}
func assignVolumeHandler(w http.ResponseWriter, r *http.Request) {
err := store.AddVolume(r.FormValue("volume"), r.FormValue("replicationType"))
@@ -248,6 +250,10 @@ func distributedOperation(volumeId storage.VolumeId, op func(location operation.
}
func runVolume(cmd *Command, args []string) bool {
+ if *vMaxCpu < 1 {
+ *vMaxCpu = runtime.NumCPU()
+ }
+ runtime.GOMAXPROCS(*vMaxCpu)
fileInfo, err := os.Stat(*volumeFolder)
if err != nil {
log.Fatalf("No Existing Folder:%s", *volumeFolder)