projects
/
arvados.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
66b8e9d
)
keep-exercise: limit PRNG usage to 512KiB per write. No issue #
author
Tom Clegg <tom@curoverse.com>
Mon, 7 Nov 2016 21:54:11 +0000
(16:54 -0500)
committer
Tom Clegg <tom@curoverse.com>
Mon, 7 Nov 2016 21:55:16 +0000
(16:55 -0500)
tools/keep-exercise/keep-exercise.go
patch
|
blob
|
history
diff --git
a/tools/keep-exercise/keep-exercise.go
b/tools/keep-exercise/keep-exercise.go
index 4131d752b85144d6ed95c1f5989ade92086f1c92..6d791bf9876a5b84a2b1b642025b730771f76da2 100644
(file)
--- a/
tools/keep-exercise/keep-exercise.go
+++ b/
tools/keep-exercise/keep-exercise.go
@@
-56,11
+56,11
@@
func main() {
overrideServices(kc)
overrideServices(kc)
- nextBuf := make(chan []byte, *WriteThreads)
nextLocator := make(chan string, *ReadThreads+*WriteThreads)
go countBeans(nextLocator)
for i := 0; i < *WriteThreads; i++ {
nextLocator := make(chan string, *ReadThreads+*WriteThreads)
go countBeans(nextLocator)
for i := 0; i < *WriteThreads; i++ {
+ nextBuf := make(chan []byte, 1)
go makeBufs(nextBuf, i)
go doWrites(kc, nextBuf, nextLocator)
}
go makeBufs(nextBuf, i)
go doWrites(kc, nextBuf, nextLocator)
}
@@
-106,23
+106,28
@@
func countBeans(nextLocator chan string) {
}
}
}
}
-func makeBufs(nextBuf chan []byte, threadID int) {
+func makeBufs(nextBuf chan
<-
[]byte, threadID int) {
buf := make([]byte, *BlockSize)
if *VaryThread {
binary.PutVarint(buf, int64(threadID))
}
buf := make([]byte, *BlockSize)
if *VaryThread {
binary.PutVarint(buf, int64(threadID))
}
+ randSize := 524288
+ if randSize > *BlockSize {
+ randSize = *BlockSize
+ }
for {
if *VaryRequest {
for {
if *VaryRequest {
-
buf = make([]byte, *Block
Size)
- if _, err := io.ReadFull(rand.Reader,
buf
); err != nil {
+
rnd := make([]byte, rand
Size)
+ if _, err := io.ReadFull(rand.Reader,
rnd
); err != nil {
log.Fatal(err)
}
log.Fatal(err)
}
+ buf = append(rnd, buf[randSize:]...)
}
nextBuf <- buf
}
}
}
nextBuf <- buf
}
}
-func doWrites(kc *keepclient.KeepClient, nextBuf
chan []byte, nextLocator chan
string) {
+func doWrites(kc *keepclient.KeepClient, nextBuf
<-chan []byte, nextLocator chan<-
string) {
for buf := range nextBuf {
locator, _, err := kc.PutB(buf)
if err != nil {
for buf := range nextBuf {
locator, _, err := kc.PutB(buf)
if err != nil {
@@
-139,7
+144,7
@@
func doWrites(kc *keepclient.KeepClient, nextBuf chan []byte, nextLocator chan s
}
}
}
}
-func doReads(kc *keepclient.KeepClient, nextLocator chan string) {
+func doReads(kc *keepclient.KeepClient, nextLocator
<-
chan string) {
for locator := range nextLocator {
rdr, size, url, err := kc.Get(locator)
if err != nil {
for locator := range nextLocator {
rdr, size, url, err := kc.Get(locator)
if err != nil {