update upload rate
This commit is contained in:
27
main.go
27
main.go
@@ -61,7 +61,7 @@ func (m UploadManager) Upload() (int, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func (m UploadManager) SetUpload(upload int) error {
|
||||
func (m UploadManager) SetUpload(upload int) (int, error) {
|
||||
m.clearTC()
|
||||
args := []string{"qdisc", "add", "dev", conf.UploadInterface, "root", "cake", "bandwidth", fmt.Sprintf("%dMbit", upload)}
|
||||
args = append(args, strings.Split(conf.CakeOptions, " ")...)
|
||||
@@ -70,9 +70,9 @@ func (m UploadManager) SetUpload(upload int) error {
|
||||
out, err := tcCmd.CombinedOutput()
|
||||
if err != nil {
|
||||
log.Debugf("[TC] executing %s failed with: %v (%s)", tcCmd.String(), err, out)
|
||||
return err
|
||||
return 0, err
|
||||
}
|
||||
return nil
|
||||
return upload, nil
|
||||
}
|
||||
|
||||
func (m UploadManager) clearTC() {
|
||||
@@ -132,7 +132,7 @@ func (m UploadManager) pingWorker() error {
|
||||
|
||||
if stats.AvgRtt.Milliseconds() >= conf.ThrottlePingThreshold {
|
||||
log.Infof("extended ping %s, adjusting upload TC %d->%d", stats.AvgRtt, up, up-conf.Bandwidth.Step)
|
||||
err = m.SetUpload(up - conf.Bandwidth.Step)
|
||||
up, err = m.SetUpload(up - conf.Bandwidth.Step)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -147,11 +147,28 @@ func (m UploadManager) pingWorker() error {
|
||||
}
|
||||
if m.isBWInRange(up + conf.Bandwidth.Step) {
|
||||
log.Infof("Short ping %s, trying to increase upload TC %d->%d", stats.AvgRtt, up, up+conf.Bandwidth.Step)
|
||||
err = m.SetUpload(up + conf.Bandwidth.Step)
|
||||
up, err = m.SetUpload(up + conf.Bandwidth.Step)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m.LastOver = time.Now()
|
||||
|
||||
stats, err = doPing(conf.Host, conf.ConformationPPP, time.Second)
|
||||
if err != nil {
|
||||
log.Warningf("ping to %s failed: %v", conf.Host, err)
|
||||
time.Sleep(time.Duration(conf.Interval) * time.Minute)
|
||||
continue
|
||||
}
|
||||
|
||||
if stats.AvgRtt.Milliseconds() >= conf.ThrottlePingThreshold {
|
||||
log.Infof("increase failed with %s ping, reverting to %d", stats.AvgRtt, up-conf.Bandwidth.Step)
|
||||
_, err = m.SetUpload(up - conf.Bandwidth.Step)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
log.Infof("Extended ping %s seems stable", stats.AvgRtt)
|
||||
}
|
||||
}
|
||||
}
|
||||
time.Sleep(time.Duration(conf.Interval) * time.Minute)
|
||||
|
Reference in New Issue
Block a user