From: Arno Wagner <arno@wagner.name>
To: dm-crypt@saout.de
Subject: Re: [dm-crypt] Poor performane (idle cpu) [SOLVED; problem with "pv"]
Date: Tue, 9 Feb 2010 17:14:48 +0100 [thread overview]
Message-ID: <20100209161448.GA23112@tansi.org> (raw)
In-Reply-To: <20100209144829.GA4211@southpole.se>
[-- Attachment #1: Type: text/plain, Size: 2979 bytes --]
On Tue, Feb 09, 2010 at 03:48:29PM +0100, Jakob Sandgren wrote:
> On Tue, Feb 09, 2010 at 01:28:06AM +0100, Arno Wagner wrote:
> > On Tue, Feb 09, 2010 at 12:54:16AM +0100, Jakob Sandgren wrote:
> > > Hi,
> > >
> > > (please keep me on CC since I'm not subscribed yet)
> > >
> > > To me it seems like there is some serious flaw within kcryptd that
> > > ends up to wait for "something" instead of sending enough requests to
> > > the disks to make sure it has data to decrypt. What do you think?
> >
> > The same thing.
> >
> > Here is a reference test (I have notebook disks in this server):
> >
> > Raw read: 54MB/s 14% CPU
> > Read with decrypt: 53MB/s 65% CPU
>
> For reference this is the exact output of my benchmark, maybe there
> are some difference in setup or benchmark?
>
> OOOOOooops! While putting toghether this information I actually found
> the cause of the problem, it was my benchark that was wrong!
>
> This was the benchmark I used to get the performance was:
> dd if=/dev/mapper/bench1 bs=4M iflag=direct |pv | dd of=/dev/null
> and the number reported by "pv" during the run was ~75MB/s and dd
> reported the same number when finished.
>
> Changing this to:
> dd if=/dev/mapper/bench1 bs=4M iflag=direct of=/dev/null count=1000
> gave a more correct number; 125MB/s
>
>
> I was not aware of that piping the data through pv would cause such a
> big degradation in performance.
>
Ah, yes. I think it is historic and uses some things
that are slow.
I have my own tool (wcs for "wc-stream") that is a bit
faster and provides real-time speeds on a vt100. It is
really small. Sources are attached.
> > That would mean the crypto is pretty slow on your new CPU.
> > As a reference, my 53MB/s at 65% CPU is on an 2800MHz Athlon
> > 64 X2 5600+ with aes-cbc-plain.
> >
> > Here is an OpenSSL crypto speed test:
> > openssl speed -evp aes-256-cbc
> > [...]
> > The 'numbers' are in 1000s of bytes per second processed.
> > type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
> > aes-256-cbc 71848.00k 98649.49k 110187.78k 113646.25k 114666.15k
> >
> > You might want to compare this with the numbers on your CPU.
>
> The numbers from my system (Core I7) are below
>
> root@mvh:~# openssl speed -evp aes-256-cbc
> ...
> The 'numbers' are in 1000s of bytes per second processed.
> type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
> aes-256-cbc 110769.28k 118629.67k 120600.15k 121138.86k 121206.10k
>
> I has now been able to get a 175MB/sec from my main raid partition.
Good.
Arno
--
Arno Wagner, Dr. sc. techn., Dipl. Inform., CISSP -- Email: arno@wagner.name
GnuPG: ID: 1E25338F FP: 0C30 5782 9D93 F785 E79C 0296 797F 6B50 1E25 338F
----
Cuddly UI's are the manifestation of wishful thinking. -- Dylan Evans
If it's in the news, don't worry about it. The very definition of
"news" is "something that hardly ever happens." -- Bruce Schneier
[-- Attachment #2: wcs.c --]
[-- Type: text/x-csrc, Size: 2396 bytes --]
/* "wc-follow": wc with incremental output every second or so.
* Line positioning is done like in dd_rescue with
* "optimistic positioning" i.e. the hope that we have a terminal that
* understands vt100 positioning.
*
* (C) Arno Wagner <arno@wagner.name> 2008. Distributed under
* The GNU public license v2
*
* Version 1.0
*
* Compile with "gcc -O6 -o wcs wcs.c"
*/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
const char* up = "\x1b[A"; //]
const char* down = "\n";
const char* right = "\x1b[C"; //]
char * usage() {
return("\n"
" Prints out running count and rate statistics about the data\n"
" read on stdin to stderr. Does use cursor positioning, which\n"
" should work on most terminals (vt100 or later).\n"
"\n"
" stdin is copied through to stdout, much like in tee.\n"
" \n"
" This programm does not support any commandline arguments.\n"
"\n"
"\n");
}
void printlong(long long l) {
if (l < 1000000L)
fprintf(stderr, "%7.3f kB", l/1000.0);
else if (l < 1000000000)
fprintf(stderr, "%7.3f MB", l/1000000.0);
else if (l < 1000000000000LL)
fprintf(stderr, "%7.3f GB", l/1000000000.0);
else
fprintf(stderr, "%7.3f TB", l/1000000000000.0);
}
int main(int argc, char ** argv) {
char buf[4096];
long long cnt = 0;
time_t to, tn, ts, dt;
int read_count;
double rate;
if (argc > 1) {
fprintf(stderr, "%s", usage());
exit(1);
}
to = time(NULL);
ts = to;
fprintf(stderr, down);
while (1) {
read_count = read (0, buf, sizeof(buf));
if (read_count < 0 && errno == EINTR) continue; // not an error
if (read_count < 0) {
perror("Abnormal condition in read from stdin:");
exit(1);
}
if (read_count > 0) {
cnt += read_count;
if (fwrite (buf, 1, read_count, stdout) != read_count) {
perror("Error in wcs writing to stdout:");
exit(1);
}
}
tn = time(NULL);
if (tn != to || read_count == 0) {
to = tn;
fprintf(stderr, "%s read: ", up);
printlong(cnt);
fprintf(stderr, " [ %12Ld B] avg: ", cnt);
// Calculate the rate
dt = tn - ts;
rate = cnt / (double)dt;
printlong((long long) rate);
fprintf(stderr, "/sec [ %5d sec]%s", dt, down);
}
if (read_count == 0) break; // we are done
}
}
next prev parent reply other threads:[~2010-02-09 16:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-08 1:16 [dm-crypt] Poor performane (idle cpu) Jakob Sandgren
2010-02-08 1:50 ` Arno Wagner
2010-02-08 23:54 ` Jakob Sandgren
2010-02-09 0:28 ` Arno Wagner
2010-02-09 14:48 ` [dm-crypt] Poor performane (idle cpu) [SOLVED; problem with "pv"] Jakob Sandgren
2010-02-09 16:14 ` Arno Wagner [this message]
2010-02-09 16:16 ` M Thomas Frederiksen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100209161448.GA23112@tansi.org \
--to=arno@wagner.name \
--cc=dm-crypt@saout.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.