aboutsummaryrefslogtreecommitdiff
path: root/Makefile (follow)
AgeCommit message (Collapse)AuthorFilesLines
2016-09-01cmake: option+target for profiling for coverageredfish1-0/+4
2016-08-30Add ARMv8 Handling to CMakeLists.txt - version 2NanoAkron1-7/+11
Adds 64-bit ARMv8 handling to CMakeLists.txt and implements GCC flags for two errata on the Cortex-A53 present on every chip in revision 0: https://developer.arm.com/docs/epm048406/latest/arm-processor-cortex-a53-mpcore-product-revision-r0-software-developers-errata-notice 835769 affects 64-bit multiply accumulate 843419 affects internal page addressing Rewritten to build on @radfish's changes Updated to address @radfish's points
2016-08-28Merge pull request #997Riccardo Spagni1-0/+8
1c7d3b0 cmake: define ARM var for all ARM arch variants (redfish) 6fe543d cmake: ARM: exclude libunwind in static build (redfish) 397b720 make: remove NO_AES from arm targets (redfish) 57ca3f3 make: make the ARM release targets statically linked (redfish) 43c07a1 readme: editted install/build instructions for clarity (redfish) a0d4058 Revert "makefile: remove unnecessary ARM-specific targets" (redfish) c2bc34b Revert "Interpret x86_64 as x86-64 for architecture" (redfish) c54b9a1 cmake: don't set ARCH from CMAKE_SYSTEM_PROCESSOR (redfish)
2016-08-28make: remove NO_AES from arm targetsredfish1-2/+2
cmake sets that appropriately based on the target architecture
2016-08-28make: make the ARM release targets statically linkedredfish1-4/+4
I think, in this context, dynamically linked builds make sense only for native builds, not these builds that target arch families to produce portable binaries.
2016-08-28Revert "makefile: remove unnecessary ARM-specific targets"redfish1-0/+8
This reverts commit ecd0f2dde7b2d8f3ff820d1190c00401c436384a. These targets that are not native builds. They are for builds portable within processors of a given family. 'make release' used to not work to build a native build on ARM, but that has been fixed. These targets are unrelated to the native build.
2016-08-26Streamline release-test targetJacob Torrey1-2/+2
When Travis builds and tests, time is limited per build, so the overhead of re-calling CMake can push it over the limit.
2016-08-26Streamline test building targetJacob Torrey1-2/+2
Signed-off-by: Jacob Torrey <discipleofranok@gmail.com>
2016-06-23makefile: remove unnecessary ARM-specific targetsredfish1-8/+0
* NO_AES is determined automatically * BUILD_64 is determined automatically
2015-12-31updated copyright yearRiccardo Spagni1-1/+1
2015-07-15** CHANGES ARE EXPERIMENTAL (FOR TESTING ONLY)NoodleDoodleNoodleDoodleNoodleDoodleNoo1-4/+8
Bockchain: 1. Optim: Multi-thread long-hash computation when encountering groups of blocks. 2. Optim: Cache verified txs and return result from cache instead of re-checking whenever possible. 3. Optim: Preload output-keys when encoutering groups of blocks. Sort by amount and global-index before bulk querying database and multi-thread when possible. 4. Optim: Disable double spend check on block verification, double spend is already detected when trying to add blocks. 5. Optim: Multi-thread signature computation whenever possible. 6. Patch: Disable locking (recursive mutex) on called functions from check_tx_inputs which causes slowdowns (only seems to happen on ubuntu/VMs??? Reason: TBD) 7. Optim: Removed looped full-tx hash computation when retrieving transactions from pool (???). 8. Optim: Cache difficulty/timestamps (735 blocks) for next-difficulty calculations so that only 2 db reads per new block is needed when a new block arrives (instead of 1470 reads). Berkeley-DB: 1. Fix: 32-bit data errors causing wrong output global indices and failure to send blocks to peers (etc). 2. Fix: Unable to pop blocks on reorganize due to transaction errors. 3. Patch: Large number of transaction aborts when running multi-threaded bulk queries. 4. Patch: Insufficient locks error when running full sync. 5. Patch: Incorrect db stats when returning from an immediate exit from "pop block" operation. 6. Optim: Add bulk queries to get output global indices. 7. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 8. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 9. Optim: Added thread-safe buffers used when multi-threading bulk queries. 10. Optim: Added support for nosync/write_nosync options for improved performance (*see --db-sync-mode option for details) 11. Mod: Added checkpoint thread and auto-remove-logs option. 12. *Now usable on 32-bit systems like RPI2. LMDB: 1. Optim: Added custom comparison for 256-bit key tables (minor speed-up, TBD: get actual effect) 2. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 3. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 4. Optim: Added support for sync/writemap options for improved performance (*see --db-sync-mode option for details) 5. Mod: Auto resize to +1GB instead of multiplier x1.5 ETC: 1. Minor optimizations for slow-hash for ARM (RPI2). Incomplete. 2. Fix: 32-bit saturation bug when computing next difficulty on large blocks. [PENDING ISSUES] 1. Berkely db has a very slow "pop-block" operation. This is very noticeable on the RPI2 as it sometimes takes > 10 MINUTES to pop a block during reorganization. This does not happen very often however, most reorgs seem to take a few seconds but it possibly depends on the number of outputs present. TBD. 2. Berkeley db, possible bug "unable to allocate memory". TBD. [NEW OPTIONS] (*Currently all enabled for testing purposes) 1. --fast-block-sync arg=[0:1] (default: 1) a. 0 = Compute long hash per block (may take a while depending on CPU) b. 1 = Skip long-hash and verify blocks based on embedded known good block hashes (faster, minimal CPU dependence) 2. --db-sync-mode arg=[[safe|fast|fastest]:[sync|async]:[nblocks_per_sync]] (default: fastest:async:1000) a. safe = fdatasync/fsync (or equivalent) per stored block. Very slow, but safest option to protect against power-out/crash conditions. b. fast/fastest = Enables asynchronous fdatasync/fsync (or equivalent). Useful for battery operated devices or STABLE systems with UPS and/or systems with battery backed write cache/solid state cache. Fast - Write meta-data but defer data flush. Fastest - Defer meta-data and data flush. Sync - Flush data after nblocks_per_sync and wait. Async - Flush data after nblocks_per_sync but do not wait for the operation to finish. 3. --prep-blocks-threads arg=[n] (default: 4 or system max threads, whichever is lower) Max number of threads to use when computing long-hash in groups. 4. --show-time-stats arg=[0:1] (default: 1) Show benchmark related time stats. 5. --db-auto-remove-logs arg=[0:1] (default: 1) For berkeley-db only. Auto remove logs if enabled. **Note: lmdb and berkeley-db have changes to the tables and are not compatible with official git head version. At the moment, you need a full resync to use this optimized version. [PERFORMANCE COMPARISON] **Some figures are approximations only. Using a baseline machine of an i7-2600K+SSD+(with full pow computation): 1. The optimized lmdb/blockhain core can process blocks up to 585K for ~1.25 hours + download time, so it usually takes 2.5 hours to sync the full chain. 2. The current head with memory can process blocks up to 585K for ~4.2 hours + download time, so it usually takes 5.5 hours to sync the full chain. 3. The current head with lmdb can process blocks up to 585K for ~32 hours + download time and usually takes 36 hours to sync the full chain. Averate procesing times (with full pow computation): lmdb-optimized: 1. tx_ave = 2.5 ms / tx 2. block_ave = 5.87 ms / block memory-official-repo: 1. tx_ave = 8.85 ms / tx 2. block_ave = 19.68 ms / block lmdb-official-repo (0f4a036437fd41a5498ee5e74e2422ea6177aa3e) 1. tx_ave = 47.8 ms / tx 2. block_ave = 64.2 ms / block **Note: The following data denotes processing times only (does not include p2p download time) lmdb-optimized processing times (with full pow computation): 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.25 hours processing time (--db-sync-mode=fastest:async:1000). 2. Laptop, Dual-core / 4-threads U4200 (3Mb) - 4.90 hours processing time (--db-sync-mode=fastest:async:1000). 3. Embedded, Quad-core / 4-threads Z3735F (2x1Mb) - 12.0 hours processing time (--db-sync-mode=fastest:async:1000). lmdb-optimized processing times (with per-block-checkpoint) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 10 minutes processing time (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with full pow computation) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.8 hours processing time (--db-sync-mode=fastest:async:1000). 2. RPI2. Improved from estimated 3 months(???) into 2.5 days (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with per-block-checkpoint) 1. RPI2. 12-15 hours (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000).
2015-05-31cleaning up, removing redundant files, renaming, fixing incorrect licensesRiccardo Spagni1-0/+28
2015-04-09fixed static windows makefile targetsRiccardo Spagni1-2/+2
2015-04-06explicitly disable AES on ARMRiccardo Spagni1-1/+1
2015-04-06add arm6 target and flagsRiccardo Spagni1-0/+4
2015-04-06new makefile targets for static buildsRiccardo Spagni1-2/+16
2015-01-27added portable slow-hash, updated makefile targets, fixed readmeRiccardo Spagni1-8/+8
2014-12-13revert the removal of the 'arch' flag from the release-static targetRiccardo Spagni1-1/+1
2014-12-01don't build tests unless we're building all-* or *-test buildsRiccardo Spagni1-5/+11
2014-09-15new Makefile target: release-staticRiccardo Spagni1-0/+4
2014-04-30prompt to delete build directory on 'make clean'monero-project1-0/+3
2014-03-03moved all stuff to githubAntonio Juarez1-0/+33