Pages:
Author

Topic: Phoenix - Efficient, fast, modular miner - page 17. (Read 760569 times)

full member
Activity: 219
Merit: 120
Yep, it's pretty bad. 50% cpu usage per GPU. Something is seriously wrong.

Wow I checked this for my system (Phenom II X6 / Win7 x64 SP1) and Phoenix 1.5 eats one FULL CPU core per instance running (2 GPUs - 2 Cores eaten).
I downclock the cores to 800 MHz each, for Mining so one could think, if I raise the core freq. it will only use 1 core for 2 or more cards. No it eats one core and it doesn't matter, if it's clocked at 800 MHz or 3200 MHz, THAT IS crazy.

Jedi, is there any explanation for this, can we help to track the issue down!?

Dia

Nothing can be done on my end. For Windows if you have more than 1 ATI GPU installed each instance will peg one CPU core at 100%. There is some stupid event loop in ATI's driver. The best way to minimize the problem is to change the process affinity so that all the instances run on the same CPU core. This doesn't reduce hashrate at all.
hero member
Activity: 769
Merit: 500
Yep, it's pretty bad. 50% cpu usage per GPU. Something is seriously wrong.

Wow I checked this for my system (Phenom II X6 / Win7 x64 SP1) and Phoenix 1.5 eats one FULL CPU core per instance running (2 GPUs - 2 Cores eaten).
I downclock the cores to 800 MHz each, for Mining so one could think, if I raise the core freq. it will only use 1 core for 2 or more cards. No it eats one core and it doesn't matter, if it's clocked at 800 MHz or 3200 MHz, THAT IS crazy.

Jedi, is there any explanation for this, can we help to track the issue down!?

Dia
sr. member
Activity: 434
Merit: 250
Yep, it's pretty bad. 50% cpu usage per GPU. Something is seriously wrong.
full member
Activity: 221
Merit: 100
Just tried version 1.50

Congrats it's eating cpu cycles like crazy AGAIN
full member
Activity: 126
Merit: 100
Why doesnt phoenix from source dont wanna run on python 2.7? I get an error, and it appears that pyopencl requires python26.dll...meaning python 2.6
newbie
Activity: 44
Merit: 0
has someone of you the same issues as described here?
http://forum.bitcoin.org/index.php?topic=27045.0
sr. member
Activity: 434
Merit: 250
hi everybody,

I have a quick question. I noticed that the phoenix miner is using one out of four cpu cores completely. so on my quadcore, I have a constant cpu use of about 25%. when I use poclbm instead, it will only use about 1% of my cpu. Is this a normal behaviour of the phoenix miner? because phoenix miner is about 5% faster in mining than poclbm on my system (hd5770). so I would prefer to use the phoenix miner, but with the high cpu usuage, it will cost me more electricity and it produces more heat, what isn't good at all, and eats up the higher efficiency in mining.
is there any possibility to fix the cpu usuage?

cheers iro

I'm wondering the same thing. I've got a 5830 and a 4870 in the same machine running CCC 11.7. The 4870 is running at 84mh/s and the 5830 is going at 304mh/s.

Looking at phoenix.exe, both instances of the program are running at 50% cpu usage. My CPU is a Core 2 duo overclocked to 3.2ghz.

This really needs to be looked into.

Strange thing is I don't think it was always this way. I don't know what changed but I think in earlier versions of phoenix my CPU usage was far lower.
newbie
Activity: 28
Merit: 0
hi everybody,

I have a quick question. I noticed that the phoenix miner is using one out of four cpu cores completely. so on my quadcore, I have a constant cpu use of about 25%. when I use poclbm instead, it will only use about 1% of my cpu. Is this a normal behaviour of the phoenix miner? because phoenix miner is about 5% faster in mining than poclbm on my system (hd5770). so I would prefer to use the phoenix miner, but with the high cpu usuage, it will cost me more electricity and it produces more heat, what isn't good at all, and eats up the higher efficiency in mining.
is there any possibility to fix the cpu usuage?

cheers iro
member
Activity: 78
Merit: 10
I have seen one or two optimization to phoenix in the past two weeks. Any chance these could be released as a 1.51?
full member
Activity: 182
Merit: 100
Are there parameters or plan to include a failover similiar to that of poclbm?
full member
Activity: 140
Merit: 100
any ideas to reach 300+Mhash/sec on a 6870 using Phoenix 1.5?

running stock voltages and clock speeds I'm only getting 265Mhash/sec
any way to get that up to 300 w/o overclocking? (don't want to shorten the life of the card)
if not, then what should i overclock/underclock to hit 300Mhash/sec?

rig specs:
Ubuntu 11.04
2x HIS PCI-Express ATI Radeon HD6870 Video Card (Engine Clock: 900 MHz; Video Memory: 1GB DDR5; Memory Clock: 4.2 GHz; RAMDAC: 400 MHz)
AMD Sempron 140, Socket AM3, 2.7 GHz, 1 MB Cache, 45 Watts
ASRock AM3 processors AMD 770-140W 4DDR3/ATI CrossFireX motherboard
Seagate Barracuda 7200.12 500 GB 7200RPM SATA 6Gb/s with NCQ 16MB Cache
Kingston ValueRAM 2 GB 1333MHz PC3-10600 DDR3 DIMM Desktop Memory
Thermaltake V3 Black Edition SECC / Plastic ATX Mid Tower Computer Case
Antec EA-650 Green ATX Energy Star Certified Power Supply


running:
python phoenix.py -u http://user:pass@server:8832 -k phatk VECTORS BFI_INT AGGRESSION=12 DEVICE=0

thanks in advanced!

Try different values of WORKSIZE and see what helps. Also, try the poclbm kernel as well.

I'm using:
-k poclbm DEVICE=0 AGGRESSION=13 BFI_INT WORKSIZE=64 VECTORS FASTLOOP=false

because the phatk kernel is about 4% slower than poclbm.
newbie
Activity: 29
Merit: 0
Code:
[09/07/2011 02:36:59] Phoenix r101 starting...
[09/07/2011 02:37:03] Connected to server
[09/07/2011 02:37:03] Currently on block: 135403
[0 Khash/sec] [0 Accepted] [0 Rejected] [RPC]

It never moves up in hashes....can anyone help?

I'm running Ubuntu 10.10 with an ATI 5850 and using these parameters:

Code:
-k poclbm DEVICE=1 VECTORS BFI_INT AGGRESSION=7

I ran it without the device parameter and it showed me a list of my devices, the second one which is ID 1 is displayed as Cypress which I assume is my ATI card? The first one is my processor. It does work when I select my processor as the device, although as expected it's extremely slow.

Followed this tutorial exactly, except I didn't use 11.04 as I don't have access to it currently. Any suggestions besides updating to 11.04?

try to remove vectors and BFI_INT and probably will work... I guess it's something wrong with your drivers, or your card doesnt support neither vectors or bfi_int

Have tried it like that too, same results Sad


hmm, try another kernell...

and why your phoenix starts with r101 starting... when you download this?

I got it from the topic I linked with the git clone command, only a few hours ago so it should be the latest version.

I think I'll just switch to a lightweight Windows installation, Ubuntu has been causing problems on that mining rig that I've setup. 11.04 wouldn't even boot on it.
sr. member
Activity: 262
Merit: 250
Dubs Get
Code:
[09/07/2011 02:36:59] Phoenix r101 starting...
[09/07/2011 02:37:03] Connected to server
[09/07/2011 02:37:03] Currently on block: 135403
[0 Khash/sec] [0 Accepted] [0 Rejected] [RPC]

It never moves up in hashes....can anyone help?

I'm running Ubuntu 10.10 with an ATI 5850 and using these parameters:

Code:
-k poclbm DEVICE=1 VECTORS BFI_INT AGGRESSION=7

I ran it without the device parameter and it showed me a list of my devices, the second one which is ID 1 is displayed as Cypress which I assume is my ATI card? The first one is my processor. It does work when I select my processor as the device, although as expected it's extremely slow.

Followed this tutorial exactly, except I didn't use 11.04 as I don't have access to it currently. Any suggestions besides updating to 11.04?

try to remove vectors and BFI_INT and probably will work... I guess it's something wrong with your drivers, or your card doesnt support neither vectors or bfi_int

Have tried it like that too, same results Sad


hmm, try another kernell...

and why your phoenix starts with r101 starting... when you download this?
newbie
Activity: 29
Merit: 0
Code:
[09/07/2011 02:36:59] Phoenix r101 starting...
[09/07/2011 02:37:03] Connected to server
[09/07/2011 02:37:03] Currently on block: 135403
[0 Khash/sec] [0 Accepted] [0 Rejected] [RPC]

It never moves up in hashes....can anyone help?

I'm running Ubuntu 10.10 with an ATI 5850 and using these parameters:

Code:
-k poclbm DEVICE=1 VECTORS BFI_INT AGGRESSION=7

I ran it without the device parameter and it showed me a list of my devices, the second one which is ID 1 is displayed as Cypress which I assume is my ATI card? The first one is my processor. It does work when I select my processor as the device, although as expected it's extremely slow.

Followed this tutorial exactly, except I didn't use 11.04 as I don't have access to it currently. Any suggestions besides updating to 11.04?

try to remove vectors and BFI_INT and probably will work... I guess it's something wrong with your drivers, or your card doesnt support neither vectors or bfi_int

Have tried it like that too, same results Sad
sr. member
Activity: 262
Merit: 250
Dubs Get
Code:
[09/07/2011 02:36:59] Phoenix r101 starting...
[09/07/2011 02:37:03] Connected to server
[09/07/2011 02:37:03] Currently on block: 135403
[0 Khash/sec] [0 Accepted] [0 Rejected] [RPC]

It never moves up in hashes....can anyone help?

I'm running Ubuntu 10.10 with an ATI 5850 and using these parameters:

Code:
-k poclbm DEVICE=1 VECTORS BFI_INT AGGRESSION=7

I ran it without the device parameter and it showed me a list of my devices, the second one which is ID 1 is displayed as Cypress which I assume is my ATI card? The first one is my processor. It does work when I select my processor as the device, although as expected it's extremely slow.

Followed this tutorial exactly, except I didn't use 11.04 as I don't have access to it currently. Any suggestions besides updating to 11.04?

try to remove vectors and BFI_INT and probably will work... I guess it's something wrong with your drivers, or your card doesnt support neither vectors or bfi_int
newbie
Activity: 29
Merit: 0
Code:
[09/07/2011 02:36:59] Phoenix r101 starting...
[09/07/2011 02:37:03] Connected to server
[09/07/2011 02:37:03] Currently on block: 135403
[0 Khash/sec] [0 Accepted] [0 Rejected] [RPC]

It never moves up in hashes....can anyone help?

I'm running Ubuntu 10.10 with an ATI 5850 and using these parameters:

Code:
-k poclbm DEVICE=1 VECTORS BFI_INT AGGRESSION=7

I ran it without the device parameter and it showed me a list of my devices, the second one which is ID 1 is displayed as Cypress which I assume is my ATI card? The first one is my processor. It does work when I select my processor as the device, although as expected it's extremely slow.

Followed this tutorial exactly, except I didn't use 11.04 as I don't have access to it currently. Any suggestions besides updating to 11.04?
hero member
Activity: 1204
Merit: 502
Vave.com - Crypto Casino
i just did an small mod to the phoenix code, to export the hashrate to a plain text file... i did it to make remote monitoring easier.

phoenix.py
Code:
#!/usr/bin/python

# Copyright (C) 2011 by jedi95 and
#                       CFSworks
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

import imp
from sys import exit
from twisted.internet import reactor
from optparse import OptionParser

import minerutil
from ConsoleLogger import ConsoleLogger
from WorkQueue import WorkQueue
from Miner import Miner

class CommandLineOptions(object):
    """Implements the Options interface for user-specified command-line
    arguments.
    """

    def __init__(self):
        self.parsedSettings = None
        self.url = None

        self.logger = None
        self.connection = None
        self.kernel = None
        self.queue = None
        self.logtotext = None

        self.kernelOptions = {}

        self._parse()

    def _parse(self):
        parser = OptionParser(usage="%prog -u URL [-k kernel] [kernel params]")
        parser.add_option("-v", "--verbose", action="store_true",
            dest="verbose", default=False, help="show debug messages")
        parser.add_option("-k", "--kernel", dest="kernel", default="poclbm",
            help="the name of the kernel to use")
        parser.add_option("-u", "--url", dest="url", default=None,
            help="the URL of the mining server to work for [REQUIRED]")
        parser.add_option("-q", "--queuesize", dest="queuesize", type="int",
            default=1, help="how many work units to keep queued at all times")
        parser.add_option("-a", "--avgsamples", dest="avgsamples", type="int",
            default=10,
            help="how many samples to use for hashrate average"),
        parser.add_option("-l", "--logtotext", dest="logtotext", default="none")

        self.parsedSettings, args = parser.parse_args()

        if self.parsedSettings.url is None:
            parser.print_usage()
            exit()
        else:
            self.url = self.parsedSettings.url

        for arg in args:
            self._kernelOption(arg)

    def getQueueSize(self):
        return self.parsedSettings.queuesize
    def getAvgSamples(self):
        return self.parsedSettings.avgsamples

    def _kernelOption(self, arg):
        pair = arg.split('=',1)
        if len(pair) < 2:
            pair.append(None)
        var, value = tuple(pair)
        self.kernelOptions[var.upper()] = value

    def makeLogger(self, requester, miner):
        if not self.logger:
            self.logger = ConsoleLogger(miner,self.parsedSettings.verbose,self.parsedSettings.logtotext)
        return self.logger

    def makeConnection(self, requester):
        if not self.connection:
            try:
                self.connection = minerutil.openURL(self.url, requester)
            except ValueError, e:
                print(e)
                exit()
        return self.connection

    def makeKernel(self, requester):
        if not self.kernel:
            module = self.parsedSettings.kernel
            try:
                file, filename, smt = imp.find_module(module, ['kernels'])
            except ImportError:
                print("Could not locate the specified kernel!")
                exit()
            kernelModule = imp.load_module(module, file, filename, smt)
            self.kernel = kernelModule.MiningKernel(requester)
        return self.kernel

    def makeQueue(self, requester):
        if not self.queue:
            self.queue = WorkQueue(requester, self)
        return self.queue

if __name__ == '__main__':
    options = CommandLineOptions()
    miner = Miner()
    miner.start(options)

    reactor.run()

ConsoleLogger.py
Code:
# Copyright (C) 2011 by jedi95 and
#                       CFSworks
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

import sys
from time import time
from datetime import datetime

def formatNumber(n):
    """Format a positive integer in a more readable fashion."""
    if n < 0:
        raise ValueError('can only format positive integers')
    prefixes = 'KMGTP'
    whole = str(int(n))
    decimal = ''
    i = 0
    while len(whole) > 3:
        if i + 1 < len(prefixes):
            decimal = '.%s' % whole[-3:-1]
            whole = whole[:-3]
            i += 1
        else:
            break
    return '%s%s %s' % (whole, decimal, prefixes[i])

class ConsoleLogger(object):
    """This class will handle printing messages to the console."""

    TIME_FORMAT = '[%d/%m/%Y %H:%M:%S]'

    UPDATE_TIME = 1.0

    def __init__(self, miner, verbose=False, logtotext="none"):
        self.verbose = verbose
        self.miner = miner
        self.logtotext = logtotext
        self.lastUpdate = time() - 1
        self.rate = 0
        self.accepted = 0
        self.invalid = 0
        self.lineLength = 0
        self.connectionType = None

    def reportRate(self, rate, update=True):
        """Used to tell the logger the current Khash/sec."""
        self.rate = rate
        if update:
            self.updateStatus()

    def reportType(self, type):
        self.connectionType = type

    def reportBlock(self, block):
        self.log('Currently on block: ' + str(block))

    def reportFound(self, hash, accepted):
        if accepted:
            self.accepted += 1
        else:
            self.invalid += 1

        hexHash = hash[::-1]
        hexHash = hexHash[:8].encode('hex')
        if self.verbose:
            self.log('Result %s... %s' % (hexHash,
                'accepted' if accepted else 'rejected'))
        else:
            self.log('Result: %s %s' % (hexHash[8:],
                'accepted' if accepted else 'rejected'))

    def reportMsg(self, message):
        self.log(('MSG: ' + message), True, True)

    def reportConnected(self, connected):
        if connected:
            self.log('Connected to server')
        else:
            self.log('Disconnected from server')

    def reportConnectionFailed(self):
        self.log('Failed to connect, retrying...')

    def reportDebug(self, message):
        if self.verbose:
            self.log(message)

    def updateStatus(self, force=False):
        #only update if last update was more than a second ago
        dt = time() - self.lastUpdate
        if force or dt > self.UPDATE_TIME:
            rate = self.rate if (not self.miner.idle) else 0
            type = " [" + str(self.connectionType) + "]" if self.connectionType is not None else ''
            status = (
                "[" + formatNumber(rate) + "hash/sec] "
                "[" + str(self.accepted) + " Accepted] "
                "[" + str(self.invalid) + " Rejected]" + type)
            self.say(status)
            if self.logtotext != "none":
                try:
                        f = open(self.logtotext,"w")
                        f.write(status)
                        f.close()
                except IOError as e:
                        print("({})".format(e))
            self.lastUpdate = time()

    def say(self, message, newLine=False, hideTimestamp=False):
        #add new line if requested
        if newLine:
            message += '\n'
            if hideTimestamp:
                timestamp = ''
            else:
                timestamp = datetime.now().strftime(self.TIME_FORMAT) + ' '

            message = timestamp + message

        #erase the previous line
        if self.lineLength > 0:
            sys.stdout.write('\b \b' * self.lineLength)
            sys.stdout.write(' ' * self.lineLength)
            sys.stdout.write('\b \b' * self.lineLength)

        #print the line
        sys.stdout.write(message)
        sys.stdout.flush()

        #cache the current line length
        if newLine:
            self.lineLength = 0
        else:
            self.lineLength = len(message)

    def log(self, message, update=True, hideTimestamp=False):
        self.say(message, True, hideTimestamp)
        if update:
            self.updateStatus(True)

Added new command line argument:  -l filename.txt

What it does is to export "status(hashrate and other stats)" to a plain text file, in a single line for easier use.
Like this:
Quote
[400.31 Mhash/sec] [0 Accepted] [0 Rejected] [RPC]

You can use routes too, like this -l /usr/hashrate.txt, but you going to need to run the miner with sudo.

It seems to be working fine.
full member
Activity: 126
Merit: 100
hi

I use phoenix through GUIMiner (when I use phoenix in CMD it told me couldn't find kernel) but when I use phoenix it often disconnect for no reson and reconnect later.
I run this option on 5850 on windows 7 64 bit : -v -k phatk VECTORS BFI_INT AGGRESSION=13 FASTLOOP=false WORKSIZE=256

Do you know what's wrong?
newbie
Activity: 36
Merit: 0
Hi all,

I have found a serious bug in phoenix that I can reproduce with 2 different mining pcs i have:

When the pool server is down and phoenix tries to reconnect a few times phoenix.exe will crash and the whole pc dies shortly after (=freeze, no bsod etc however)

Im using standard catalyst 2.4 and no overclocking at all (4x 6870 @ 900/500)

Thanks alot Smiley
legendary
Activity: 2618
Merit: 1006
A possible bug/error (at least it looks to me on being at least partially on your end):

I played a bit with writing my own pool backend and phoenix currently throws the following error when connecting to my local "pool" (on Windows):

Code:
[0 Khash/sec] [0 Accepted] [0 Rejected]Unhandled Error
Traceback (most recent call last):
  File "twisted\internet\tcp.pyc", line 529, in connectionLost

  File "minerutil\_newclient3420.pyc", line 826, in dispatcher

  File "minerutil\_newclient3420.pyc", line 1438, in _connectionLost_WAITING

  File "minerutil\_newclient3420.pyc", line 1367, in _disconnectParser

--- ---
  File "minerutil\_newclient3420.pyc", line 494, in connectionLost

  File "twisted\web\http.pyc", line 1366, in noMoreData

  File "minerutil\_newclient3420.pyc", line 409, in _finished

  File "minerutil\_newclient3420.pyc", line 1346, in _finishResponse

[b]exceptions.UnboundLocalError: local variable 'reason' referenced before assignme
nt[/b]
Looks like this variable is really not there, at least when phoenix gets one of the weird getworks from my <100 lines "pool server".
If needed for debugging I can also share that code so you can test it better.

Edit:
poclbm seems to get shares fine, so either they are less picky in accepting shares or there's an error on your side (I guess the former...)
Pages:
Jump to: