Added mining threads count option.

This commit is contained in:
Revertron
2021-03-29 11:10:48 +02:00
parent 5aab83613e
commit 4e0b0b3d1c
8 changed files with 53 additions and 11 deletions
+20 -3
View File
@@ -1,18 +1,35 @@
# Settings # Main settings
# The hash of first block in a chain to know with which nodes to work
origin = "00000102C2F9BFD2803284D93327F089D60FC72A06F19AF2384567F2646B8348" origin = "00000102C2F9BFD2803284D93327F089D60FC72A06F19AF2384567F2646B8348"
# A path to your key file to load autamatically
key_file = "default.key" key_file = "default.key"
# Your node will listen on that address for other nodes to connect
listen = "[::]:4244" listen = "[::]:4244"
# Set true if you want your IP to participate in peer-exchange, or false otherwise
public = true public = true
# Bootstrap nodes # Bootstrap nodes
# All bootstap nodes
#peers = ["test-ip4.alfis.name:4244", "test-ip6.alfis.name:4244"] #peers = ["test-ip4.alfis.name:4244", "test-ip6.alfis.name:4244"]
peers = ["[300:1251::1]:4244"] # Yggdrasil nodes only
peers = ["test-ip6.alfis.name:4244"]
# DNS server options # DNS server options
[dns] [dns]
# Your DNS resolver will be listening on this address and port (Usual port is 53)
listen = "127.0.0.1:5300" listen = "127.0.0.1:5300"
# How many threads to spawn by DNS server
threads = 20 threads = 20
# AdGuard DNS servers to filter ads and trackers # AdGuard DNS servers to filter ads and trackers
#forwarders = ["94.140.14.14:53", "94.140.15.15:53"] #forwarders = ["94.140.14.14:53", "94.140.15.15:53"]
# Wyrd servers
forwarders = ["[301:2522::53]:53", "[303:8b1a::53]:53"] forwarders = ["[301:2522::53]:53", "[303:8b1a::53]:53"]
#forwarders = ["[301:2522::53]:53", "[301:2923::53]:53", "94.140.14.14:53", "94.140.15.15:53"] # Cloudflare servers
#forwarders = ["1.1.1.1:53", "1.0.0.1:53"]
#Mining options
[mining]
# How many CPU threads to spawn for mining
threads = 0
+2 -1
View File
@@ -32,7 +32,7 @@ impl DnsFilter for BlockchainFilter {
subdomain = String::from(parts[2]); subdomain = String::from(parts[2]);
} }
} }
debug!("Searching domain {} and record {}", &search, &subdomain); debug!("Searching record type '{:?}', name '{}' for domain '{}'", &qtype, &subdomain, &search);
let data = self.context.lock().unwrap().chain.get_domain_info(&search); let data = self.context.lock().unwrap().chain.get_domain_info(&search);
match data { match data {
@@ -129,6 +129,7 @@ impl DnsFilter for BlockchainFilter {
} }
} }
//debug!("Answers: {:?}", &answers);
return if !answers.is_empty() { return if !answers.is_empty() {
// Create DnsPacket // Create DnsPacket
let mut packet = DnsPacket::new(); let mut packet = DnsPacket::new();
+1 -1
View File
@@ -69,7 +69,7 @@ impl fmt::Debug for Transaction {
impl Serialize for Transaction { impl Serialize for Transaction {
fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where S: Serializer { fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where S: Serializer {
let mut structure = serializer.serialize_struct("Transaction", 4).unwrap(); let mut structure = serializer.serialize_struct("Transaction", 5).unwrap();
structure.serialize_field("identity", &self.identity)?; structure.serialize_field("identity", &self.identity)?;
structure.serialize_field("confirmation", &self.confirmation)?; structure.serialize_field("confirmation", &self.confirmation)?;
structure.serialize_field("method", &self.method)?; structure.serialize_field("method", &self.method)?;
+6 -1
View File
@@ -157,7 +157,12 @@ pub fn create_key(context: Arc<Mutex<Context>>) {
let mining = Arc::new(AtomicBool::new(true)); let mining = Arc::new(AtomicBool::new(true));
let miners_count = Arc::new(AtomicUsize::new(0)); let miners_count = Arc::new(AtomicUsize::new(0));
{ context.lock().unwrap().bus.post(Event::KeyGeneratorStarted); } { context.lock().unwrap().bus.post(Event::KeyGeneratorStarted); }
for _cpu in 0..num_cpus::get() { let threads = context.lock().unwrap().settings.mining.threads;
let threads = match threads {
0 => num_cpus::get(),
_ => threads
};
for _cpu in 0..threads {
let context = Arc::clone(&context); let context = Arc::clone(&context);
let mining = mining.clone(); let mining = mining.clone();
let miners_count = miners_count.clone(); let miners_count = miners_count.clone();
+7 -2
View File
@@ -142,8 +142,13 @@ impl Miner {
let thread_spawn_interval = Duration::from_millis(10); let thread_spawn_interval = Duration::from_millis(10);
let live_threads = Arc::new(AtomicU32::new(0u32)); let live_threads = Arc::new(AtomicU32::new(0u32));
let cpus = num_cpus::get(); let cpus = num_cpus::get();
debug!("Starting {} threads for mining", cpus); let threads = context.lock().unwrap().settings.mining.threads;
for _cpu in 0..cpus { let threads = match threads {
0 => cpus,
_ => threads
};
debug!("Starting {} threads for mining", threads);
for _cpu in 0..threads {
let context = Arc::clone(&context); let context = Arc::clone(&context);
let job = job.clone(); let job = job.clone();
let mining = Arc::clone(&mining); let mining = Arc::clone(&mining);
+10 -1
View File
@@ -21,6 +21,8 @@ pub struct Settings {
pub peers: Vec<String>, pub peers: Vec<String>,
#[serde(default)] #[serde(default)]
pub dns: Dns, pub dns: Dns,
#[serde(default)]
pub mining: Mining,
} }
impl Settings { impl Settings {
@@ -69,7 +71,8 @@ impl Default for Settings {
listen: String::from("[::]:4244"), listen: String::from("[::]:4244"),
public: false, public: false,
peers: vec![], peers: vec![],
dns: Default::default() dns: Default::default(),
mining: Mining::default()
} }
} }
} }
@@ -89,6 +92,12 @@ impl Default for Dns {
} }
} }
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct Mining {
#[serde(default)]
pub threads: usize
}
fn default_listen() -> String { fn default_listen() -> String {
String::from("[::]:4244") String::from("[::]:4244")
} }
+1 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="is-clipped"> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
+5
View File
@@ -1,3 +1,8 @@
html {
overflow-y: auto;
min-width: 768px;
}
.container { .container {
margin: 10pt; margin: 10pt;
} }