This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Problems with Cygwin on SSD


Hi...

Recently I bought an SSD (OCZ Vertex 3 120GB). I hoped to improve performance together with cygwin. But some strange and unexpected things happen.

My Setup:
Dell Optiplex 980. Core i5-760. 4 GB Ram. Windows 7 SP1 64bit. A 500GB WDC WD5000AAKS harddrive and the new SSD. Windows 7 installed on SSD. Cygwin 1.7.11 - up to date in all packages. Installed on drive D: (HD) and on drive H: (SSD).


The SSD is a SATA III drive while my machine is only having SATA II, so I am loosing some speed here but the SSD is in normal windows operations still hell faster than the HD. I am also getting the maximum performance which SATA II can deliver according to some benchmark tools. The SSD is formatted to use 4k sectors. I also did a test with 512byte sectors where I loose performance on write but the problems do not change. I also copied the cygwin installation manually from D: to H: which made no difference.

The 2 problem(s) as of now:
a) no permissions
When I am having cygwin installed on the SSD I have no permissions on cygwin's files. On none of them.


Example /bin/bash

Cygwin on HD:
$stat /bin/bash
  File: `/bin/bash'
  Size: 536078          Blocks: 524        IO Block: 65536  regular file
Device: 48f3fa60h/1223948896d   Inode: 1125899907057137  Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (11000/  roland)   Gid: (11001/ develop)
Access: 2012-03-20 13:59:02.953125000 +0100
Modify: 2012-01-03 15:32:06.000000000 +0100
Change: 2012-03-28 16:59:36.216999900 +0200
 Birth: 2012-03-05 13:07:35.237439800 +0100

Cygwin on SSD:
$stat /bin/bash
  File: `/bin/bash'
  Size: 536078          Blocks: 524        IO Block: 65536  regular file
Device: aa325caah/2855427242d   Inode: 281474976710756  Links: 1
Access: (0000/----------)  Uid: (11000/  roland)   Gid: (11001/ develop)
Access: 2012-03-29 09:19:13.486065800 +0200
Modify: 2012-01-03 15:32:06.000000000 +0100
Change: 2012-03-29 09:19:13.486065800 +0200
 Birth: 2012-03-29 09:19:13.486065800 +0200

As you can see the access flags are 0 on ssd. So I straced it.
Here are the (I think) relevant parts of it.

HD:
2512 52868 [main] stat 3636 lstat64: entering
26 52894 [main] stat 3636 normalize_posix_path: src /bin/bash
25 52919 [main] stat 3636 normalize_posix_path: /bin/bash = normalize_posix_path (/bin/bash)
25 52944 [main] stat 3636 mount_info::conv_to_win32_path: conv_to_win32_path (/bin/bash)
25 52969 [main] stat 3636 set_flags: flags: binary (0x2)
24 52993 [main] stat 3636 mount_info::conv_to_win32_path: src_path /bin/bash, dst D:\cygwin\bin\bash, flags 0x3000A, rc 0
52 53045 [main] stat 3636 symlink_info::check: 0xC0000034 = NtCreateFile (\??\D:\cygwin\bin\bash)
30 53075 [main] stat 3636 symlink_info::check: 0xC0000034 = NtQueryInformationFile (\??\D:\cygwin\bin\bash)
45 53120 [main] stat 3636 symlink_info::check: 0x0 = NtCreateFile (\??\D:\cygwin\bin\bash.exe)
37 53157 [main] stat 3636 symlink_info::check: not a symlink
26 53183 [main] stat 3636 symlink_info::check: 0 = symlink.check(D:\cygwin\bin\bash.exe, 0x28B860) (0x43000A)
25 53208 [main] stat 3636 path_conv::check: this->path(D:\cygwin\bin\bash.exe), has_acls(1)
29 53237 [main] stat 3636 build_fh_pc: fh 0x6127435C, dev 0xC3
26 53263 [main] stat 3636 stat_worker: (\??\D:\cygwin\bin\bash.exe, 0x28CBB0, 0x6127435C), file_attributes 8224
77 53340 [main] stat 3636 cygpsid::debug_print: get_sids_info: owner SID = S-1-5-21-290147797-1639656955-1287535205-1000
27 53367 [main] stat 3636 cygpsid::debug_print: get_sids_info: group SID = S-1-5-21-290147797-1639656955-1287535205-1001
26 53393 [main] stat 3636 get_info_from_sd: ACL 1ED, uid 11000, gid 11001
47 53440 [main] stat 3636 fhandler_base::fstat_helper: 0 = fstat (\??\D:\cygwin\bin\bash.exe, 0x28CBB0) st_size=536078, st_mode=0x81ED, st_ino=1125899907057137st_atim=4F687F16.38CF8888 st_ctim=4F732758.CEF27DC st_mtim=4F031166.0 st_birthtim=4F54AC87.E270B38
31 53471 [main] stat 3636 stat_worker: 0 = (\??\D:\cygwin\bin\bash.exe,0x28CBB0)


SSD:
2051 30843 [main] stat 2284 lstat64: entering
24 30867 [main] stat 2284 normalize_posix_path: src /bin/bash
18 30885 [main] stat 2284 normalize_posix_path: /bin/bash = normalize_posix_path (/bin/bash)
18 30903 [main] stat 2284 mount_info::conv_to_win32_path: conv_to_win32_path (/bin/bash)
18 30921 [main] stat 2284 set_flags: flags: binary (0x2)
17 30938 [main] stat 2284 mount_info::conv_to_win32_path: src_path /bin/bash, dst H:\cygwin\bin\bash, flags 0x3000A, rc 0
41 30979 [main] stat 2284 symlink_info::check: 0xC0000034 = NtCreateFile (\??\H:\cygwin\bin\bash)
21 31000 [main] stat 2284 symlink_info::check: 0xC0000034 = NtQueryInformationFile (\??\H:\cygwin\bin\bash)
34 31034 [main] stat 2284 symlink_info::check: 0x0 = NtCreateFile (\??\H:\cygwin\bin\bash.exe)
29 31063 [main] stat 2284 symlink_info::check: not a symlink
19 31082 [main] stat 2284 symlink_info::check: 0 = symlink.check(H:\cygwin\bin\bash.exe, 0x28B860) (0x43000A)
18 31100 [main] stat 2284 path_conv::check: this->path(H:\cygwin\bin\bash.exe), has_acls(1)
20 31120 [main] stat 2284 build_fh_pc: fh 0x612742EC, dev 0xC3
18 31138 [main] stat 2284 stat_worker: (\??\H:\cygwin\bin\bash.exe, 0x28CBB0, 0x612742EC), file_attributes 32
55 31193 [main] stat 2284 cygpsid::debug_print: get_sids_info: owner SID = S-1-5-21-290147797-1639656955-1287535205-1000
19 31212 [main] stat 2284 cygpsid::debug_print: get_sids_info: group SID = S-1-5-21-290147797-1639656955-1287535205-1001
18 31230 [main] stat 2284 get_info_from_sd: ACL 0, uid 11000, gid 11001
33 31263 [main] stat 2284 fhandler_base::fstat_helper: 0 = fstat (\??\H:\cygwin\bin\bash.exe, 0x28CBB0) st_size=536078, st_mode=0x8000, st_ino=281474976710756st_atim=4F740CF1.1CF8C688 st_ctim=4F740CF1.1CF8C688 st_mtim=4F031166.0 st_birthtim=4F740CF1.1CF8C688
22 31285 [main] stat 2284 stat_worker: 0 = (\??\H:\cygwin\bin\bash.exe,0x28CBB0)


In my eyes the main differences cut down to 2 lines.

HD :26 53263 [main] stat 3636 stat_worker: (\??\D:\cygwin\bin\bash.exe, 0x28CBB0, 0x6127435C), file_attributes 8224
SSD:18 31138 [main] stat 2284 stat_worker: (\??\H:\cygwin\bin\bash.exe, 0x28CBB0, 0x612742EC), file_attributes 32
The file_attributes differ


HD :47 53440 [main] stat 3636 fhandler_base::fstat_helper: 0 = fstat (\??\D:\cygwin\bin\bash.exe, 0x28CBB0) st_size=536078, st_mode=0x81ED, st_ino=1125899907057137st_atim=4F687F16.38CF8888 st_ctim=4F732758.CEF27DC st_mtim=4F031166.0 st_birthtim=4F54AC87.E270B38
SSD:33 31263 [main] stat 2284 fhandler_base::fstat_helper: 0 = fstat (\??\H:\cygwin\bin\bash.exe, 0x28CBB0) st_size=536078, st_mode=0x8000, st_ino=281474976710756st_atim=4F740CF1.1CF8C688 st_ctim=4F740CF1.1CF8C688 st_mtim=4F031166.0 st_birthtim=4F740CF1.1CF8C688
st_mode differs


Beside of that cygwin appears to operate normally (as far as I can tell as of now).

b) speed
I did a small testdrive with compiling the gdb sources as of tonight. I extracted them to /tmp on each of the installations.


HD:
$time ./configure
real    0m16.630s
user    0m5.407s
sys     0m7.815s

$time make -j 4
real    4m55.995s
user    4m27.627s
sys     4m0.979s

SSD:
$time ./configure
real    0m17.628s
user    0m5.333s
sys     0m9.970s

$time make -j 4
real    5m27.127s
user    4m29.529s
sys     4m45.653s

????

Not exactly the speed I hoped to get. The compile on SSD is even slower than on HD.
I did the same compile test using an old whacky mingw/msys and I could see at least
a speed increase of about 15%.


Any clues where these problems could come from?

Thanks,

Roland


-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]