Re: [gem5-users] Running YCSB in Gem5 FS

2020-04-17 Thread Ciro Santilli
I would first try to be 100% certain what are the missing instructions
by looking at gem5 --debug-flags ExecAll logs and objdump.

Then I would try to implement the instructions, don't be put off, they
will likely be very similar to other existing ones which you can copy
from, and you can always ask for help on more specific points.

On Fri, Apr 17, 2020 at 5:18 PM Miseon Han  wrote:
>
> Hello,
>
> When I running Redis with YCSB, I got below warning from Gem5 (Redis with 
> redis-benchmark does not occur below warning).
>
> warn: instruction 'fwait' unimplemented
> warn: instruction 'frndint' unimplemented
> warn: instruction 'fistp' unimplemented
> warn: instruction 'f2xm1' unimplemented
> warn: instruction 'ffree' unimplemented
> warn: instruction 'fincstp' unimplemented
>
>
> Also, below is from YCSB source code that is related to YCSB errors 
> (IndexOutOfBoundsException).
>
>   /**
>* Reads a big-endian 8-byte long from an offset in the given array.
>* @param bytes The array to read from.
>* @return A long integer.
>* @throws IndexOutOfBoundsException if the byte array is too small.
>* @throws NullPointerException if the byte array is null.
>*/
>   public static long bytesToLong(final byte[] bytes) {
> return (bytes[0] & 0xFFL) << 56
> | (bytes[1] & 0xFFL) << 48
> | (bytes[2] & 0xFFL) << 40
> | (bytes[3] & 0xFFL) << 32
> | (bytes[4] & 0xFFL) << 24
> | (bytes[5] & 0xFFL) << 16
> | (bytes[6] & 0xFFL) << 8
> | (bytes[7] & 0xFFL) << 0;
>   }
>
>   /**
>* Writes a big-endian 8-byte long at an offset in the given array.
>* @param val The value to encode.
>* @throws IndexOutOfBoundsException if the byte array is too small.
>*/
>   public static byte[] longToBytes(final long val) {
> final byte[] bytes = new byte[8];
> bytes[0] = (byte) (val >>> 56);
> bytes[1] = (byte) (val >>> 48);
> bytes[2] = (byte) (val >>> 40);
> bytes[3] = (byte) (val >>> 32);
> bytes[4] = (byte) (val >>> 24);
> bytes[5] = (byte) (val >>> 16);
> bytes[6] = (byte) (val >>> 8);
> bytes[7] = (byte) (val >>> 0);
> return bytes;
>   }
>
> Maybe type inversion to/from long incurs floating-point instructions that are 
> not implemented in Gem5, which results in YCSB errors.
> Is there any way I can solve this problem? - Is there any patch that 
> implemented those instructions?
> I am sort of Gem5 beginner, implementing those instructions in Gem5 would be 
> hard for me ;(
>
> Regards,
> Miseon Han
>
> -Original Message-
> From: Ciro Santilli 
> Sent: Tuesday, April 14, 2020 1:08 AM
> To: gem5 users mailing list ; Miseon Han 
> 
> Subject: Re: [gem5-users] Running YCSB in Gem5 FS
>
> You have to try and debug it further to narrow down the exact operation gem5 
> seems to be doing wrong (--debug-flags ExecAll, GDB into guest).
>
> This could be easy to spot, or extremely difficult if the divergence happened 
> way earlier in execution before the crash, but I don't see an alternative.
>
> One possible approach especially for single threaded execution is to try and 
> compare QEMU ExecAll logs to QEMU instruction traces.
>
> On Mon, Apr 13, 2020 at 10:58 PM Miseon Han  wrote:
> >
> > Hello,
> >
> >
> >
> > I made x86 disk image with ubuntu 16.06 and build kernel 4.8.13
> > following
> > http://www.lowepower.com/jason/setting-up-gem5-full-system.html.
> > (using QEMU)
> >
> > Gem5 source code is downloaded using this: git clone
> > https://gem5.googlesource.com/public/gem5
> >
> >
> >
> > Using QEMU, I installed Redis-4.0.0 and YCSB-0.17.0 in my created disk 
> > image. At QEMU, Redis and YCSB worked well.
> >
> > Redis: ./src/redis-server redis.conf
> >
> > YCSB: ./bin/ycsb load redis -s -P workloads/workloada -p 
> > "redis.host=127.0.0.1" -p "redis.port=6379"
> >
> >
> >
> > However, when I use Gem5 Full System mode (./build/X86/gem5.opt 
> > configs/example/fs.py –disk-images=myimage –kernel=mykernel 
> > –mem-size=4096MB), YCSB gives me error “IndexOutOfBoundsException: Index 
> > 17”.
> >
> >
> >
> > As far as I know, many papers used gem5 for simulating server-client model 
> > and used YCSB for client.
> >
> > My tested environment is one node for Redis and YCSB. So, I think Redis and 
> > YCSB should be worked fine in this environment.
> >
> >
> >
> > Is there any way I can solve this problem?
> >
> >
> >
> > Regards,
> >
> > Miseon Han
> >
> >
> >
> > ___
> > gem5-users mailing list
> > gem5-users@gem5.org
> > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Running YCSB in Gem5 FS

2020-04-17 Thread Miseon Han
Hello,

When I running Redis with YCSB, I got below warning from Gem5 (Redis with 
redis-benchmark does not occur below warning).

warn: instruction 'fwait' unimplemented
warn: instruction 'frndint' unimplemented
warn: instruction 'fistp' unimplemented
warn: instruction 'f2xm1' unimplemented
warn: instruction 'ffree' unimplemented
warn: instruction 'fincstp' unimplemented


Also, below is from YCSB source code that is related to YCSB errors 
(IndexOutOfBoundsException).

  /**
   * Reads a big-endian 8-byte long from an offset in the given array.
   * @param bytes The array to read from.
   * @return A long integer.
   * @throws IndexOutOfBoundsException if the byte array is too small.
   * @throws NullPointerException if the byte array is null.
   */
  public static long bytesToLong(final byte[] bytes) {
return (bytes[0] & 0xFFL) << 56
| (bytes[1] & 0xFFL) << 48
| (bytes[2] & 0xFFL) << 40
| (bytes[3] & 0xFFL) << 32
| (bytes[4] & 0xFFL) << 24
| (bytes[5] & 0xFFL) << 16
| (bytes[6] & 0xFFL) << 8
| (bytes[7] & 0xFFL) << 0;
  }

  /**
   * Writes a big-endian 8-byte long at an offset in the given array.
   * @param val The value to encode.
   * @throws IndexOutOfBoundsException if the byte array is too small.
   */
  public static byte[] longToBytes(final long val) {
final byte[] bytes = new byte[8];
bytes[0] = (byte) (val >>> 56);
bytes[1] = (byte) (val >>> 48);
bytes[2] = (byte) (val >>> 40);
bytes[3] = (byte) (val >>> 32);
bytes[4] = (byte) (val >>> 24);
bytes[5] = (byte) (val >>> 16);
bytes[6] = (byte) (val >>> 8);
bytes[7] = (byte) (val >>> 0);
return bytes;
  }

Maybe type inversion to/from long incurs floating-point instructions that are 
not implemented in Gem5, which results in YCSB errors.
Is there any way I can solve this problem? - Is there any patch that 
implemented those instructions?
I am sort of Gem5 beginner, implementing those instructions in Gem5 would be 
hard for me ;(

Regards,
Miseon Han

-----Original Message-----
From: Ciro Santilli  
Sent: Tuesday, April 14, 2020 1:08 AM
To: gem5 users mailing list ; Miseon Han 

Subject: Re: [gem5-users] Running YCSB in Gem5 FS

You have to try and debug it further to narrow down the exact operation gem5 
seems to be doing wrong (--debug-flags ExecAll, GDB into guest).

This could be easy to spot, or extremely difficult if the divergence happened 
way earlier in execution before the crash, but I don't see an alternative.

One possible approach especially for single threaded execution is to try and 
compare QEMU ExecAll logs to QEMU instruction traces.

On Mon, Apr 13, 2020 at 10:58 PM Miseon Han  wrote:
>
> Hello,
>
>
>
> I made x86 disk image with ubuntu 16.06 and build kernel 4.8.13 
> following 
> http://www.lowepower.com/jason/setting-up-gem5-full-system.html. 
> (using QEMU)
>
> Gem5 source code is downloaded using this: git clone 
> https://gem5.googlesource.com/public/gem5
>
>
>
> Using QEMU, I installed Redis-4.0.0 and YCSB-0.17.0 in my created disk image. 
> At QEMU, Redis and YCSB worked well.
>
> Redis: ./src/redis-server redis.conf
>
> YCSB: ./bin/ycsb load redis -s -P workloads/workloada -p 
> "redis.host=127.0.0.1" -p "redis.port=6379"
>
>
>
> However, when I use Gem5 Full System mode (./build/X86/gem5.opt 
> configs/example/fs.py –disk-images=myimage –kernel=mykernel 
> –mem-size=4096MB), YCSB gives me error “IndexOutOfBoundsException: Index 17”.
>
>
>
> As far as I know, many papers used gem5 for simulating server-client model 
> and used YCSB for client.
>
> My tested environment is one node for Redis and YCSB. So, I think Redis and 
> YCSB should be worked fine in this environment.
>
>
>
> Is there any way I can solve this problem?
>
>
>
> Regards,
>
> Miseon Han
>
>
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Running YCSB in Gem5 FS

2020-04-14 Thread Ciro Santilli
You have to try and debug it further to narrow down the exact
operation gem5 seems to be doing wrong (--debug-flags ExecAll, GDB
into guest).

This could be easy to spot, or extremely difficult if the divergence
happened way earlier in execution before the crash, but I don't see an
alternative.

One possible approach especially for single threaded execution is to
try and compare QEMU ExecAll logs to QEMU instruction traces.

On Mon, Apr 13, 2020 at 10:58 PM Miseon Han  wrote:
>
> Hello,
>
>
>
> I made x86 disk image with ubuntu 16.06 and build kernel 4.8.13 following 
> http://www.lowepower.com/jason/setting-up-gem5-full-system.html. (using QEMU)
>
> Gem5 source code is downloaded using this: git clone 
> https://gem5.googlesource.com/public/gem5
>
>
>
> Using QEMU, I installed Redis-4.0.0 and YCSB-0.17.0 in my created disk image. 
> At QEMU, Redis and YCSB worked well.
>
> Redis: ./src/redis-server redis.conf
>
> YCSB: ./bin/ycsb load redis -s -P workloads/workloada -p 
> "redis.host=127.0.0.1" -p "redis.port=6379"
>
>
>
> However, when I use Gem5 Full System mode (./build/X86/gem5.opt 
> configs/example/fs.py –disk-images=myimage –kernel=mykernel 
> –mem-size=4096MB), YCSB gives me error “IndexOutOfBoundsException: Index 17”.
>
>
>
> As far as I know, many papers used gem5 for simulating server-client model 
> and used YCSB for client.
>
> My tested environment is one node for Redis and YCSB. So, I think Redis and 
> YCSB should be worked fine in this environment.
>
>
>
> Is there any way I can solve this problem?
>
>
>
> Regards,
>
> Miseon Han
>
>
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

[gem5-users] Running YCSB in Gem5 FS

2020-04-13 Thread Miseon Han
Hello,

I made x86 disk image with ubuntu 16.06 and build kernel 4.8.13 following 
http://www.lowepower.com/jason/setting-up-gem5-full-system.html. (using QEMU)
Gem5 source code is downloaded using this: git clone 
https://gem5.googlesource.com/public/gem5

Using QEMU, I installed Redis-4.0.0 and YCSB-0.17.0 in my created disk image. 
At QEMU, Redis and YCSB worked well.
Redis: ./src/redis-server redis.conf
YCSB: ./bin/ycsb load redis -s -P workloads/workloada -p 
"redis.host=127.0.0.1" -p "redis.port=6379"

However, when I use Gem5 Full System mode (./build/X86/gem5.opt 
configs/example/fs.py -disk-images=myimage -kernel=mykernel -mem-size=4096MB), 
YCSB gives me error "IndexOutOfBoundsException: Index 17".

As far as I know, many papers used gem5 for simulating server-client model and 
used YCSB for client.
My tested environment is one node for Redis and YCSB. So, I think Redis and 
YCSB should be worked fine in this environment.

Is there any way I can solve this problem?

Regards,
Miseon Han

___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users