Thank you Sijie. Best, Jialin
On Wed, Jun 18, 2014 at 11:39 PM, Sijie Guo <[email protected]> wrote: > On Tue, Jun 17, 2014 at 11:56 PM, Jaln <[email protected]> wrote: > > > Hi, > > > > I'm running the bookkeeper benchmark read, > > I first start 3 local bookie, then run the 'benchmark writes', > > it works. (I'm assuming the later 'read' will need some data, so I > generate > > it first) > > > > Secondly, run 'benchmark reads -ledger' > > it's supposed to work, bc the 'help' says, with no 'args' for ledger, it > > will read all. It turns out not working. > > > > -ledger is an option with argument. you need to specify ledger number for > it. you could use either '-ledger' to specify a ledger to read, or use > '-listen' to specify number of ledgers you want to read. > > Ivan: could you give more details on '-ledger' and '-listen' options? > > > > > > Thirdly, I try 'benchmark reads -ledger 0', 'benchmark reads -ledger 1', > > 'benchmark reads -ledger 2' > > it all says like 'INFO - [main:BenchReadThroughputLatency@260] - > Watching > > for creation of/ledgers/L0000000002' > > > > Well, I tried more, e.g., 'benchmark reads -ledger 3', 'benchmark reads > > -ledger 4', and so on.. > > it works, and returns like 'Read 9999 in 2001ms', though I have no idea > > what does this mean. > > > > You need to specify a valid ledger id. The ledger ids should be the ledgers > generated in the write benchmark. I guessed currently write benchmark > doesn't print the ledger ids for u. so you tried starting from zero. but > the ledger id might not be generated monotonically from zero. so some of > the ids might not be valid ledger ids. > > > > > > Last, I debugged the 'bookkeeper benchmark', > > I found that the 'benchmark reads -ledger 4' finally goes to this > function: > > > > LedgerEntryRequest(ArrayList<InetSocketAddress> ensemble, long > lId, > > long eId) { > > super(lId, eId); > > > > this.ensemble = ensemble; > > this.writeSet = lh.distributionSchedule.getWriteSet(entryId); > > this.sentReplicas = new > > BitSet(lh.getLedgerMetadata().getWriteQuorumSize()); > > this.erroredReplicas = new > > BitSet(lh.getLedgerMetadata().getWriteQuorumSize()); > > } > > I can not find the place where the ledger file is opened and read, in my > > understanding, the 0.log file should be read, as shown in the below, one > > bookie has the following contents: > > > > └── bookie29131094670313057736test > > └── current > > ├── 0 > > │ ├── 3 > > │ │ └── 3.idx > > │ └── 4 > > │ └── 4.idx > > ├── 0.log > > ├── 146ad7d2a78.txn > > ├── lastId > > ├── lastMark > > └── VERSION > > > > In which the sub-directory '/current/0', contains the index files; the > > '0.log' is the ledger file for later faster read, and the > '146ad7d2a78.txn' > > is the journal file. > > > > The benchmark is running clients to talk to bookie servers. And those > files were opened by bookie servers not by the clients. > > > > Plz help and correct me. Thanks very much. > > > > Best, > > Jialin > > > -- Genius only means hard-working all one's life
