func newBenchClientServerCache_Ext(buffersSize, osBuffersSize, maxPendingRequestsCount int, b *testing.B) (c *Client, s *Server, cache *ybc.Cache) { config := ybc.Config{ MaxItemsCount: 1000 * 1000, DataFileSize: 10 * 1000 * 1000, } cache, err := config.OpenCache(true) if err != nil { b.Fatal(err) } s = &Server{ Cache: cache, ListenAddr: testAddr, ReadBufferSize: buffersSize, WriteBufferSize: buffersSize, OSReadBufferSize: osBuffersSize, OSWriteBufferSize: osBuffersSize, } s.Start() c = &Client{ ServerAddr: testAddr, ClientConfig: ClientConfig{ ReadBufferSize: buffersSize, WriteBufferSize: buffersSize, OSReadBufferSize: osBuffersSize, OSWriteBufferSize: osBuffersSize, MaxPendingRequestsCount: maxPendingRequestsCount, }, } c.Start() return }
func newCache(t *testing.T) *ybc.Cache { config := ybc.Config{ MaxItemsCount: 1000 * 1000, DataFileSize: 10 * 1000 * 1000, } cache, err := config.OpenCache(true) if err != nil { t.Fatal(err) } return cache }
func newBenchCachingClientServerCache(b *testing.B) (cc *CachingClient, s *Server, cache *ybc.Cache) { c, s, cache := newBenchClientServerCache(b) config := ybc.Config{ MaxItemsCount: 1000 * 1000, DataFileSize: 10 * 1000 * 1000, } localCache, err := config.OpenCache(true) if err != nil { b.Fatal(err) } cc = &CachingClient{ Client: c, Cache: localCache, } return }
func createCache() ybc.Cacher { config := ybc.Config{ MaxItemsCount: ybc.SizeT(*maxItemsCount), DataFileSize: ybc.SizeT(*cacheSize) * ybc.SizeT(1024*1024), } var err error var cache ybc.Cacher cacheFilesPath_ := strings.Split(*cacheFilesPath, ",") cacheFilesCount := len(cacheFilesPath_) logMessage("Opening data files. This can take a while for the first time if files are big") if cacheFilesCount < 2 { if cacheFilesPath_[0] != "" { config.DataFile = cacheFilesPath_[0] + ".cdn-booster.data" config.IndexFile = cacheFilesPath_[0] + ".cdn-booster.index" } cache, err = config.OpenCache(true) if err != nil { logFatal("Cannot open cache: [%s]", err) } } else if cacheFilesCount > 1 { config.MaxItemsCount /= ybc.SizeT(cacheFilesCount) config.DataFileSize /= ybc.SizeT(cacheFilesCount) var configs ybc.ClusterConfig configs = make([]*ybc.Config, cacheFilesCount) for i := 0; i < cacheFilesCount; i++ { cfg := config cfg.DataFile = cacheFilesPath_[i] + ".cdn-booster.data" cfg.IndexFile = cacheFilesPath_[i] + ".cdn-booster.index" configs[i] = &cfg } cache, err = configs.OpenCluster(true) if err != nil { logFatal("Cannot open cache cluster: [%s]", err) } } logMessage("Data files have been opened") return cache }
func main() { iniflags.Parse() runtime.GOMAXPROCS(*goMaxProcs) syncInterval_ := *syncInterval if syncInterval_ <= 0 { syncInterval_ = ybc.ConfigDisableSync } config := ybc.Config{ MaxItemsCount: ybc.SizeT(*maxItemsCount), DataFileSize: ybc.SizeT(*cacheSize) * ybc.SizeT(1024*1024), HotItemsCount: ybc.SizeT(*hotItemsCount), HotDataSize: ybc.SizeT(*hotDataSize), DeHashtableSize: *deHashtableSize, SyncInterval: syncInterval_, } var cache ybc.Cacher var err error cacheFilesPath_ := strings.Split(*cacheFilesPath, ",") cacheFilesCount := len(cacheFilesPath_) log.Printf("Opening data files. This can take a while for the first time if files are big\n") if cacheFilesCount < 2 { if cacheFilesPath_[0] != "" { config.DataFile = cacheFilesPath_[0] + ".go-memcached.data" config.IndexFile = cacheFilesPath_[0] + ".go-memcached.index" } cache, err = config.OpenCache(true) if err != nil { log.Fatalf("Cannot open cache: [%s]", err) } } else if cacheFilesCount > 1 { config.MaxItemsCount /= ybc.SizeT(cacheFilesCount) config.DataFileSize /= ybc.SizeT(cacheFilesCount) var configs ybc.ClusterConfig configs = make([]*ybc.Config, cacheFilesCount) for i := 0; i < cacheFilesCount; i++ { cfg := config cfg.DataFile = cacheFilesPath_[i] + ".go-memcached.data" cfg.IndexFile = cacheFilesPath_[i] + ".go-memcached.index" configs[i] = &cfg } cache, err = configs.OpenCluster(true) if err != nil { log.Fatalf("Cannot open cache cluster: [%s]", err) } } defer cache.Close() log.Printf("Data files have been opened\n") s := memcache.Server{ Cache: cache, ListenAddr: *listenAddr, ReadBufferSize: *readBufferSize, WriteBufferSize: *writeBufferSize, OSReadBufferSize: *osReadBufferSize, OSWriteBufferSize: *osWriteBufferSize, } log.Printf("Starting the server") if err := s.Serve(); err != nil { log.Fatalf("Cannot serve traffic: [%s]", err) } }