Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
Merge pull request #25 from jodh-intel/lint-fixes
Browse files Browse the repository at this point in the history
lint: Fix linter errors
  • Loading branch information
WeiZhang555 committed Apr 23, 2018
2 parents e2f4445 + 90e4e12 commit 25dc863
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 65 deletions.
58 changes: 17 additions & 41 deletions ksm.go
Expand Up @@ -10,6 +10,7 @@ import (
"bufio"
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"os/signal"
Expand All @@ -24,9 +25,6 @@ import (
)

type ksmSetting struct {
// run describes if we want KSM to be on or off.
run bool

// pagesPerScanFactor describes how many pages we want
// to scan per KSM run.
// ksmd will san N pages, where N*pagesPerScanFactor is
Expand All @@ -35,6 +33,9 @@ type ksmSetting struct {

// scanIntervalMS is the KSM scan interval in milliseconds.
scanIntervalMS uint32

// run describes if we want KSM to be on or off.
run bool
}

func anonPages() (int64, error) {
Expand Down Expand Up @@ -102,10 +103,10 @@ const (
)

var ksmSettings = map[ksmMode]ksmSetting{
ksmOff: {false, 1000, 500}, // Turn KSM off
ksmSlow: {true, 500, 100}, // Every 100ms, we scan 1 page for every 500 pages available in the system
ksmStandard: {true, 100, 10}, // Every 10ms, we scan 1 page for every 100 pages available in the system
ksmAggressive: {true, 10, 1}, // Every ms, we scan 1 page for every 10 pages available in the system
ksmOff: {1000, 500, false}, // Turn KSM off
ksmSlow: {500, 100, true}, // Every 100ms, we scan 1 page for every 500 pages available in the system
ksmStandard: {100, 10, true}, // Every 10ms, we scan 1 page for every 100 pages available in the system
ksmAggressive: {10, 1, true}, // Every ms, we scan 1 page for every 10 pages available in the system
}

func (k ksmMode) String() string {
Expand All @@ -121,25 +122,6 @@ func (k ksmMode) String() string {
return ""
}

func (k *ksmMode) Set(value string) error {
for _, r := range strings.Split(value, ",") {
if r == "off" {
*k = ksmOff
return nil
} else if r == "initial" {
*k = ksmInitial
return nil
} else if r == "auto" {
*k = ksmAuto
return nil
}

return fmt.Errorf("Unsupported KSM knob %v", r)
}

return nil
}

type sysfsAttribute struct {
path string
file *os.File
Expand All @@ -158,7 +140,7 @@ func (attr *sysfsAttribute) close() error {
}

func (attr *sysfsAttribute) read() (string, error) {
_, err := attr.file.Seek(0, os.SEEK_SET)
_, err := attr.file.Seek(0, io.SeekStart)
if err != nil {
return "", err
}
Expand All @@ -172,7 +154,7 @@ func (attr *sysfsAttribute) read() (string, error) {
}

func (attr *sysfsAttribute) write(value string) error {
_, err := attr.file.Seek(0, os.SEEK_SET)
_, err := attr.file.Seek(0, io.SeekStart)
if err != nil {
return err
}
Expand All @@ -188,20 +170,22 @@ func (attr *sysfsAttribute) write(value string) error {
}

type ksm struct {
root string
run sysfsAttribute
pagesToScan sysfsAttribute
sleepInterval sysfsAttribute
initialized bool

root string
initialPagesToScan string
initialSleepInterval string
initialKSMRun string

currentKnob ksmMode
throttling bool

kickChannel chan bool

throttling bool
initialized bool

sync.Mutex
}

Expand Down Expand Up @@ -230,11 +214,7 @@ func (k *ksm) restoreSysFS() error {
return err
}

if err = k.run.write(k.initialKSMRun); err != nil {
return err
}

return nil
return k.run.write(k.initialKSMRun)
}

func (k *ksm) restore() error {
Expand Down Expand Up @@ -366,11 +346,7 @@ func (k *ksm) tune(s ksmSetting) error {
return err
}

if err = k.run.write(ksmStart); err != nil {
return err
}

return nil
return k.run.write(ksmStart)
}

// kick gets us back to the aggressive setting
Expand Down
24 changes: 0 additions & 24 deletions ksm_test.go
Expand Up @@ -351,30 +351,6 @@ func TestKSMTune(t *testing.T) {
}
}

func TestKSMModeSet(t *testing.T) {
var k ksmMode
var err error

err = k.Set(string(ksmOff))
assert.Nil(t, err)
assert.Equal(t, k, ksmOff)

err = k.Set(string(ksmAuto))
assert.Nil(t, err)
assert.Equal(t, k, ksmAuto)

err = k.Set(string(ksmInitial))
assert.Nil(t, err)
assert.Equal(t, k, ksmInitial)

err = k.Set(string(ksmStandard))
assert.NotNil(t, err)

err = k.Set(fmt.Sprintf("%s,%s", ksmAuto, ksmOff))
assert.Nil(t, err)
assert.Equal(t, k, ksmAuto)
}

func TestKSMModeString(t *testing.T) {
var k ksmMode
var s string
Expand Down

0 comments on commit 25dc863

Please sign in to comment.