Guest User

Untitled

a guest
Jul 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "log"
  6. "sync"
  7. "time"
  8.  
  9. "github.com/m3db/m3db/src/dbnode/client"
  10. "github.com/m3db/m3db/src/dbnode/sharding"
  11. topo "github.com/m3db/m3db/src/dbnode/topology"
  12. "github.com/m3db/m3x/ident"
  13. xtime "github.com/m3db/m3x/time"
  14. )
  15.  
  16. const (
  17. numberServer = 64
  18. numberRegion = 2
  19.  
  20. factorDegree = 1024
  21. )
  22.  
  23. func main() {
  24. start := time.Now()
  25. bench()
  26. d := time.Now().Sub(start).Seconds()
  27. t := numberServer * numberRegion * factorDegree
  28. fmt.Printf("%d %.3f %.3f\n", t, d, float64(t)/d)
  29. }
  30.  
  31. func bench() {
  32. shardIDs := make([]uint32, 64)
  33. for i := range shardIDs {
  34. shardIDs[i] = uint32(i)
  35. }
  36. shards := sharding.NewShards(shardIDs, 2)
  37.  
  38. fn := sharding.NewHashFn(len(shards), 1313)
  39. shardSet, _ := sharding.NewShardSet(shards, fn)
  40.  
  41. hss := topo.NewHostShardSet(topo.NewHost("1", "127.0.0.1:9000"), shardSet)
  42.  
  43. tplogyOptions := topo.NewStaticOptions().SetReplicas(1).SetHostShardSets([]topo.HostShardSet{hss}).SetShardSet(shardSet)
  44. tplogy := topo.NewStaticInitializer(tplogyOptions)
  45.  
  46. options := client.NewOptions().SetTopologyInitializer(tplogy).SetWriteConsistencyLevel(topo.ConsistencyLevelOne)
  47. c, err := client.NewClient(options)
  48. if err != nil {
  49. log.Fatal(err)
  50. }
  51.  
  52. session, err := c.NewSession()
  53. if err != nil {
  54. panic(err)
  55. }
  56. defer session.Close()
  57.  
  58. var wg sync.WaitGroup
  59. for i := 0; i < numberServer; i++ {
  60. wg.Add(1)
  61. go func(serverID int) {
  62. for region := 0; region < numberRegion; region++ {
  63. tags := ident.NewTags(
  64. ident.StringTag("server", fmt.Sprintf("Server%d", serverID)),
  65. ident.StringTag("region", fmt.Sprintf("Region%d", region)),
  66. )
  67.  
  68. for factor := 0; factor < factorDegree; factor++ {
  69. if err := session.WriteTagged(
  70. ident.StringID("default"),
  71. ident.StringID("cpu"),
  72. ident.NewTagsIterator(tags),
  73. time.Now(), float64(1+serverID*factor*region),
  74. xtime.Second, nil); err != nil {
  75. panic(err)
  76. }
  77. }
  78. }
  79. wg.Done()
  80. }(i)
  81. }
  82. wg.Wait()
  83. }
Add Comment
Please, Sign In to add comment