Problems with Cygwin on SSD

Roland Schwingel roland.schwingel@onevision.de
Thu Mar 29 08:28:00 GMT 2012


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



More information about the Cygwin mailing list