Bitcoin Forum
May 24, 2024, 12:38:33 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 [160] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 ... 233 »
3181  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 24, 2015, 03:16:36 AM
That sounds impressive, I just assumed the building workload didn't translate well to a multi-threaded design.

As with most transactional DB, there is only 1 write transaction active at any given time, so you can't have several threads writing to the same DB concurrently. In this aspect, multi-threading the build code seems pointless. Because of this, I simply grand-fathered the original build code into the backend overhaul. It relied on mirroring the full content of the blockchain, and that made storage bandwidth the only significant factor in build speed, so I ignored most optimizations in this area. Now that it skips the blockchain copy in fullnode, a meaningful portion of the building phase is taken by block parsing and processing, so there is enough performance to gain to justify the effort of multi-threading this part.

Quote
You know those people that say stuff like "3 GHz? 8 GB RAM? You can't even use that spec for anything! More processing than anyone could use!".

That's the same mentality that brings large IT companies to state that tablets and mobile devices will replace PCs in every home. For their use pattern, they don't need that kind of oomph, and in a way I believe no one but gamers and professionals needed that kind of oomph until large scale P2P networks appeared.

Now with Bitcoin things are quite different. With the blockchain eventually moving into big data territory, not only are big PCs relevant, but the implementation performance matters too. The faster the software, the lower the barrier to entry. If anything, my intention with these changes is for the code to scale with whatever hardware it is thrown at, so that a 10yo computer still has a chance at syncing a wallet against a full node, and that I won't have to rework everything from the ground up 10 years from now either.

Quote
Well, I'm imagining a machine with, say, an 8 core CPU, 32 GB RAM, a PCI express SSD with NVMe, plus a 100 Mbit internet connection. That's probably a mid level dev machine here and now, and I think it could setup Armory 0.94 and Core 0.10 in about 2 hours, going flat out. And the performance of both those pieces of software are set to improve further in the future? I'm slightly amazed that so much efficiency can be gained (and that we have hardware suited to the task Cheesy)

My current machine is 6 core cpu (12 execution threads with HT), 32GB ddr4, SATA SSD RAID0 and fiber internet (~250Mb/s). And I'm thinking I should go with 64GB RAM soon. I had thought of buying a dual CPU board and go with a couple Haswell v3 Xeons but I backed off. Can't blow all my bitcoins on a PC =P.

For info, it takes 280~300 sec to scan the DB with ~5k addresses, about 80sec to build, and another ~100 sec for the header reading and what not (that could be reduced to 15sec with some effort).

Quote
Lol, I have clearly forgotten the name. You have another dev who is a Linux type, Andy?

That would be njaard (I try to avoid referring to people by their name on public forums unless they make a point of doing so). He was part of the original effort in remodeling the backend, which was deployed in 0.93. Since then he was given other responsibilities and I'm the only left with the task of completing this todo list. It still has some large entries to deal with, like blocks over P2P, lite node, full granularity coin selection, Trezor.

Andy is a Python dev. You can see some of his recent work in the hotfix release (0.93.2)
3182  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 23, 2015, 10:58:09 PM
DB build performance seems now to be outpacing the increase to the blockchain size. With my 4 year old quad core machine, OS and blockchain running from an SSD, I'm getting ~45 minutes to set up Armory, and that's including transaction scanning for several wallets that pretty much covers every bitcoin transaction I've made since 2012. I dare not try, but I suspect that 93.x might take 2-3 times longer to do that job.

Keep in mind that most the effort was in the scanning code. The building code is still single threaded so a lot of speed can be squeezed there as well (in due time).

Great stuff, goatpig (and I think Nick was involved too?). Thanks.

Who's Nick o.o"
3183  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 23, 2015, 09:49:30 PM
If this isn't good enough for the testing release, then it's probably pretty close.

Looks like we are going with this for the testing release + a couple minor bugs I'm still working on.

Thanks for your invaluable help guys, in particular Carlton Banks =). I guess etotheipi will create a brand new topic for the testing builds, sometimes this week.
3184  Bitcoin / Armory / Re: Will the Armory Wallet be made compatible with the Trezor hardware wallet? on: June 23, 2015, 04:38:22 AM
It's the same as it was before. We want to implement Trezor support, but we need to finish the new wallets first (our current wallet format is not compatible with Trezor).
3185  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 22, 2015, 06:20:10 PM
Current push is stable enough to build and scan Db 4 times completely today, using extensive/varied wallets. Zero failures so far.

Aight, time to re-enable the thread toggling. Bracing myself =D

My CPU heatsink is doing the same Cheesy

I plan on adding at least a command line arg to limit the amount of available cores for the scan. The current setting is to squeeze as much CPU time as available.
3186  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 22, 2015, 06:09:24 PM
Current push is stable enough to build and scan Db 4 times completely today, using extensive/varied wallets. Zero failures so far.

Aight, time to re-enable the thread toggling. Bracing myself =D
3187  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 22, 2015, 03:19:28 PM
Previous commit did produce one successful scan, but it mostly generated the deadlock that happens when/just before the scan begins. Scan completed through.

Forgot to initialize the atomic flag used to signal termination (I'm an idiot). Unlike to most std templates, atomic objects are constructed with an unknown state (which actually makes sense). Obviously I knew all that and I forgot to clear the flag in the ctor...

If this proves to be stable, I'll reactivate the thread toggling (which relies heavily on this flag).
3188  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 22, 2015, 01:12:21 AM
Let's see what the latest push can do
3189  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 10:12:23 PM
Disabled thread toggling, grab 874cf1e and let's see how far it gets.
3190  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 10:05:24 PM
It seems to me like the thread count readjustment triggers the BDM not ready's. If it dodges the bug, it adjusts about 3 times during the first 160,000 blocks, then the threads totally smother the CPU cores. Sometimes it doesn't even handle the zeroth adjust, such as the run that generated the output in the previous post.

You were experiencing that bug before I even added the thread adjustment part. There is something wrong with the code loop through the pull thread queues I'm thinking.
3191  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 06:06:18 PM
Give it a couple more spins see if it always fails at the same block, please.

There is a backport version of Qt 4.8.6, that should get rid of the Gtk issue I think.

EDIT: actually give it a minute before running this again, pushing some extra verbose.

EDIT2: should be commit 0008c05
3192  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 05:15:59 PM
I'm told the Gtk-Critical thing is an issue with the Qt version that ships in wheezy (4.8.2, dates from 2012 or something). I use Debian wheezy for my Linux tests and I see this error all the time, without any issue, so I don't believe it is related to BDM snafus.

I've just pushed a small change to squash a dead lock and get rid of BDM not ready false positive errors. This should make it easier to identify the current state of the scanning bug.
3193  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 02:37:58 PM
Still failing, but getting further through. "BDM not ready" appears as a warning dialog box, OK'ing that shuts Armory. Still a deterministic fault, so far, so part of the same issue maybe?

This means you are through your original issue. I would like you to run it a few times to determine whether you are completely past that point or this was a fluke.

As for the error, you are on the same thing as Roy, although the nastier form. From the looks of it, it didn't even try to scan anything! Do you have wallets registered?
3194  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 20, 2015, 02:40:07 AM
Here's a tentative fix for Roy's issue. I added some minor changes around the part Carlton is stuck on but I don't expect this is it yet. Pull away.
3195  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 11:01:58 PM
Also the "attempting fix" code is something I have to go over, it's the stuff from 0.93 that is not really on point with the 0.94 changes.

Ah.  Hence the 'should not get here' error?

That one is somewhat nastier. It triggers if the the DB cannot find the hash of the top scanned block, which probably means the scan halted before it failed to commit any blocks at all (and returned an empty top scanned block hash). It could be the concurrency issue triggering early on or something unrelated, although I expect it's the former.
3196  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 10:28:25 PM
Had eleven instances of the 'top scanned block' issue in the logs

This is a marker that the multi threaded block pulling code is still somehow messy, i.e. the scan fails to pull data for a block and halts. The fixing part detects this, goes over all blocks past that point, realizes there is nothing wrong with the data (or there is and it tries to fix it) and resumes scanning from the highest committed block, on and on.

Also the "attempting fix" code is something I have to go over, it's the stuff from 0.93 that is not really on point with the 0.94 changes.
3197  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 09:58:23 PM
Thanks, that's enough information for now
3198  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 07:51:00 PM
Like I said, this didn't happen in the first couple of 0.94 pre-versions you came up with, not sure what you can infer from that.

The usual conclusion in this case is: there always was an issue with this code, and changes in its vicinity revealed it. Otherwise it was probably occurring at low frequency, passing itself as a scan segfault of sorts.
3199  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 07:31:58 PM
Could well be just chance since the behaviour before was clearly somewhat nondeterministric.  But I did the above and it synced my wallets perfectly first time (and I hadn't managed to get a successfully sync at all so far up till now).  If I get the chance tomorrow I'll nuke the databases and try again to confirm whether this is repeatable.

Well yes and no. I expect the issue is object life span: one type of threads creates some data that gets cleaned up before the next type of threads is done with it. If you reduce the amount of threads per groups to the bare minimum, you also reduce the "surface area" for the bug and thus the chance it will occur.

Quote
Just to confirm, only change I made was as you suggested:

That's the proper change to force thread count for all groups down to 1.

Is there any point in my trying the new version or will this version just behave the same for me?

I'd like you to run it, the main fix in this version is supposed to cover your issue.
3200  Bitcoin / Armory / Re: Starting preliminary 0.94 testing - "Headless fullnode" on: June 19, 2015, 07:14:53 PM
Just to totally clarify, I cannot get this or the build from your last commit to behave in any way except for this bug. It does this every time I load it up. Carefully deleting old Db and logs every run. Tested that Armory 93.1 & 93.2 work normally on the same VM (I cloned it from a working bitcoin-configured VM to begin with, but you never know).

And that bit is what's disturbing me considering this part uses the same code across version. Again, this is pretty old code, so I'm puzzled as to why it starts failing now. Anyways, I think I got a clue as to what's going on.

I heard there were new processor instructions to abstract a bit of the complexity away from the programming logic, but Intel screwed up the implementation somehow and it's not quite "on the streets" yet. But all the specs are finalised as far as I remember, I believe they're calling it "lock elision" in C++, although I may be remembering wrong. So there's some more C++ to render the old standard obsolete for us all to look forward to  Cheesy.

That's pretty fancy. It doesn't really simplify much. It looks like it's meant to speed up interlocked operations that don't overlap in memory, and it's only in some Haswell CPUs so far. I suspect it's the kind of extra assembly optimization that I will personally never have to use, as either compilers or OSes will upgrade their locks with HLE. The way it looks like, there is little reason not to standardize it for every lock operation.
Pages: « 1 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 [160] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 ... 233 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!