ORION and DBMS_RESOURCE_MANAGER. Output CALIBRATE_IO
Hi all
on Windows 2008 server, Oracle 11.2.0.3.0 - 64 bit Production
I ran:
Orion-simple-ob-test testname
And my iops.csv file:
When I run DBMS_RESOURCE_MANAGER. CALIBRATE_IO
It gives me:
7 | DBMS_RESOURCE_MANAGER. CALIBRATE_IO (1, 10, Ops ARE / s, Mbit/s, lat); |
8
9 | DBMS_OUTPUT. Put_line ('max_iops =' |) ARE OPS / s); |
10 | DBMS_OUTPUT. Put_line ("latency time = ' |") LAT); |
11 | dbms_output.put_line ('max_mbps =' |) Mbit/s); |
12 end;
13.
max_iops = 76
latency = 12
max_mbps = 45
Then ORION gives max_iops = 189 and DBMS package gives max_iops = 76.
How to explain this difference?
My db_block_size is 8192.
Thank you.
Yes thank you.
That's all.
ORION and DBMS_RESOURCE_MANAGER. CALIBRATE_IO display MIOPS years BMPS for the same physical disks.
Can they be different any method they use?
Measure two utilities can display different amounts for the same entity of the material?
ORION:
Advanced C:\app\product\11.2.0\dbhome_1\BIN>Orion-course testname - ob_test-num_disks 1 - size_small 1024
ORION: ORacle IO numbers - Version 11.2.0.3.0
ob_test_20141020_1433
Calibration will take about 9 minutes.
Using a high value for - cache_size may take longer.
Mbit/s maximum big = 34,53 @ small = 0 and large = 2
Maximum small IOPS / s = 41 @ small = 5 and large = 0
Little time to read latency: avg = 121009 US, min = 690 US, max = 1632015 US = 118995 US @ small standard deviations = 5 and Large = 0
Small minimum latency time = 31555 usecs @ small = 1 and wide = 0
Of DBMS_RESOURCE_MANAGER. CALIBRATE_IO:
7 | DBMS_RESOURCE_MANAGER. CALIBRATE_IO (1, 30, Ops ARE / s, Mbit/s, lat); |
max_iops = 98
latency = 29
max_mbps = 44
Best regards.
Tags: Database
Similar Questions
-
understanding DBMS_RESOURCE_MANAGER. Output CALIBRATE_IO
Hi all
on 11.2.0.3
I am trying to understand DBMS_RESOURCE_MANAGER. CALIBRATE_IO. So I ran:
SQL > SET SERVEROUTPUT ON
SQL > DECLARE
2 lat INTEGER;
ARE 3 Ops / s WHOLE;
4 Mbit/s INTEGER;
5 BEGIN
6 DBMS_RESOURCE_MANAGER. CALIBRATE_IO (< RECORD >, < MAX_LATENCY >, IOPS / s, Mbit/s, lat);
DBMS_RESOURCE_MANAGER 7. CALIBRATE_IO (2, 10, Ops ARE / s, Mbit/s, lat);
8
9 DBMS_OUTPUT. Put_line ('max_iops =' |) ARE OPS / s);
10 DBMS_OUTPUT. Put_line ("latency time = ' |") LAT);
11 dbms_output.put_line ('max_mbps =' |) Mbit/s);
12 end;
13.
And he gives:
max_iops = 86
latency = 10
max_mbps = 47
PL/SQL procedure successfully completed.
This what should I understand max_iops = 86; latency = 10; max_mbps = 47?
They are good? They are bad? How to improve?
I have reviewed the following:
https://blog.art-of-coding.EU/testing-Oracle-IO/
The Blog of Arup Nanda: Resource Manager of IO calibration in 11g
http://DB-blog.Web.CERN.ch/blog/Luca-Canali/2014-05-closer-look-calibrateio
Thank you.
Of course it depends on your disks.
Here's an ODA 20 x 600GB 15K RPM SAS discs
MAX_IOPS MAX_MBPS MAX_PMBPS NUM_PHYSICAL_DISKS LATENCY
---------- ---------- ---------- ---------- ------------------
18040 4860 709 10 20
But from a virtual machine on my laptop I join your numbers...
Kind regards
Franck.
-
11.2 DBMS_RESOURCE_MANAGER. CALIBRATE_IO
Dear experts!
We use oracle 11.2 standard edition on the windows platform.
When I start the following procedure:
SET SERVEROUTPUT ON
DECLARE
LAT INTEGER;
ARE OPS / s WHOLE;
Mbps INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER. CALIBRATE_IO (1, 20, Ops ARE / s, Mbit/s, lat);
DBMS_OUTPUT. Put_line ('max_iops =' |) ARE OPS / s);
DBMS_OUTPUT. Put_line ("latency time = ' |") LAT);
dbms_output.put_line ('max_mbps =' |) Mbit/s);
end;
/
I get the result:
max_iops = 41
latency = 23
max_mbps = 28
Which tells me the new io calibration function on? How can I use these values for the tuning of my database? For example, change the spfile settings.
Thank you
MarkusNo, the results are not used by the optimizer to do this, you use DBMS_STATS. GATHER_SYSTEM_STATS.
with calibrate_io you just measure the IO subsystem. you may have a requirement of (x iops) for a new database. then, you set up the system and check if the conditions are met.
HTH
-
create a VI that will acquire temp and pressure for 10 seconds every 500ms. The thermal strain developed and output quantity is given then:
stress = 100 * temp + 6 * pressure;
output = 500 + temp * 0.1 + pressure * 10;
draw the stress and output temperature Vs. also highlight and Vs output pressure.For the question above... I tried this method attached... Please tell me it's writing or not?
Macarius,
Because this seems to be not just a school problem, but also a review, I'm not very accurate so that I don't do your work for you.
Your program can meet the required specifications. She doesn't have a lot of understanding the power of LabVIEW. The documentation is non-existent. Style leave much to be desired.
Depending on what you are supposed to have learned, I would give it a passing beam but low grade. It could be planning a lot with relatively little effort.
Lynn
-
text of triming and show output
Dear Sir
I need to write a complex sql for that need your help.
In the column where the value returned in text format, it a great statement. The output I need to filter an integer value that is length of 20 digits and I know just the beginning of it's 4-digit.
My requirement is to filter the value of the value of the column and show output put some asterisks in the middle of it. Please can you help me with sql.
Thanks in advance...
with
data in the form of
(select listagg (box when rn< 10="" then="" words="" end,'="" ')="" within="" group="" (order="" by="" null)||'="">
"5501' |" substr (to_char (ABS (dbms_random.normal)), 2, 16). » '||
listagg (case when rn > = 10 then end of words,' ') within the Group (order by null) big_statement
(select rn, dbms_random.string (', dbms_random.value (2.20)) level words)
of the double
connect by level<=>=>
)
)
Select substr (big_statement, instr(big_statement,'5501'), 5) | LPAD('*',10,'*') | substr (big_statement, InStr(big_statement,'5501') + 15.5) n,
big_statement
from the data
N BIG_STATEMENT 55014 * 32523 FQI mdtuamvwyq melwkrbhyi osqyoebmvceopa pyedgaszkmyyrif qhipswqpt rqqicgtupbcjki vdrtkybtv zktpsgsa 55014693773840232523 fjfbbquzdwjulvriucg iuaql knaeaqqkjlvkvqkykz lowrjykxtiteyra mfjduru qasqldqjenkksiw qgtihgqsizl rnvlfdekwegm spqwcqjiuusodqbtug tx xnnppmxrkkvkhjtf Concerning
Etbin
-
Hi all
Please find test data and results as XML and SQL output.
Version : Oracle Database 11 g Enterprise Edition Release 11.1.0.7.0 - 64 bit Production
create table emp_xml (empno number, emp_name varchar2 (100), by e-mail to varchar2 (100));
insert into emp_xml values (100, 'DAVID',' [email protected]');
insert into emp_xml values (101, 'ROBERT',' [email protected]');
insert into emp_xml values (102, 'DANIEL',' [email protected]');
CREATE table emp_dept_xml (empno number, dept_list varchar2 (4000));
insert into emp_dept_xml values (' 100,'10, 20, 30, ");
insert into emp_dept_xml values (' 101,'40, 20, 10, 30, 50, ");
insert into emp_dept_xml values (102, ' 10'),
Expected in SQL output
-----------------------
EMPNO EMP_NAME EMAIL DEPTNO
DAVID 100 [email protected] 10
DAVID 100 [email protected] 20
DAVID 100 [email protected] 30
ROBERT 101 [email protected] 10
ROBERT 101 [email protected] 20
ROBERT 101 [email protected] 30
ROBERT 101 [email protected] 40
ROBERT 101 [email protected] 50
DANIEL 102 [email protected] 10
Results in XML
-----------------------
< USERS_DETAILS >
< USER >
< EMPNO > 100 < / EMPNO >
DAVID < NAME > < / NAME >
< EMAIL > [email protected] < / EMAIL >
< ASSIGNED_DEPT >
< DEPT > 10 < / DEPT >
< DEPT > 20 < / DEPT >
< DEPT > 30 < / DEPT >
< / ASSIGNED_DEPT >
< / USER >
< USER >
101/EMPNO < EMPNO > >
ROBERT < NAME > < / NAME >
< EMAIL > [email protected] < / EMAIL >
< ASSIGNED_DEPT >
< DEPT > 10 < / DEPT >
< DEPT > 20 < / DEPT >
< DEPT > 30 < / DEPT >
< DEPT > 40 < / DEPT >
< DEPT > 50 < / DEPT >
< / ASSIGNED_DEPT >
< / USER >
< USER >
< > 102 EMPNO < / EMPNO >
DANIEL < NAME > < / NAME >
< EMAIL > [email protected] < / EMAIL >
< ASSIGNED_DEPT >
< DEPT > 10 < / DEPT >
< / ASSIGNED_DEPT >
< / USER >
< / USERS_DETAILS >
Thank you
Rambeau
SQL> select e.empno 2 , e.emp_name 3 , e.email 4 , regexp_substr(d.dept_list, '[^,]+', 1, level) deptno 5 from emp_xml e 6 join emp_dept_xml d 7 on e.empno = d.empno 8 connect 9 by level <= length(d.dept_list) - length(replace(dept_list, ',')) 10 and prior e.empno = e.empno 11 and prior dbms_random.value() is not null; EMPNO EMP_NAME EMAIL DEPTNO ---------- -------------------- -------------------- -------------------- 100 DAVID [email protected] 10 100 DAVID [email protected] 20 100 DAVID [email protected] 30 101 ROBERT [email protected] 40 101 ROBERT [email protected] 20 101 ROBERT [email protected] 10 101 ROBERT [email protected] 30 101 ROBERT [email protected] 50 102 DANIEL [email protected] 10 9 rows selected. SQL> select xmlelement 2 ( 3 "USERS_DETAILS" 4 , xmlagg(xmlelement 5 ( 6 "USER" 7 , xmlelement("EMPNO", empno) 8 , xmlelement("NAME", emp_name) 9 , xmlelement("ASSIGNED_DEPT", xmlagg(xmlelement("DEPT", deptno))) 10 )) 11 ).extract('*') xml_output 12 from ( 13 select e.empno 14 , e.emp_name 15 , e.email 16 , regexp_substr(d.dept_list, '[^,]+', 1, level) deptno 17 from emp_xml e 18 join emp_dept_xml d 19 on e.empno = d.empno 20 connect 21 by level <= length(d.dept_list) - length(replace(dept_list, ',')) 22 and prior e.empno = e.empno 23 and prior dbms_random.value() is not null 24 ) 25 group 26 by empno 27 , emp_name; XML_OUTPUT --------------------------------------------------------------------------------
100 DAVID 10 20 30 101 ROBERT 40 50 30 20 10 102 DANIEL 10 -
Hello
I installed an infusion of SSD and fresh install of Windows 7 64-bit, including the installation of Adobe CC with premiere pro and other related applications. My audio works fine, I have a portable speaker connected to the back of the audio 'line in the green plug' at the back of my office, have not had any problems with her.
However when opening Adobe PP for the first time I get the message "the device has changed and no output channel is present. You want to open the Audio hardware preferences. At the opening of the entry default preference reads "no devices available (does not). I was unable to change the value by default using the box entrance, but was able to change the default output. I changed the default output to ' speakers (device 2-high definition audio) and after that I got an error that read "sorry a serious error has occurred which caused Adobe PP stopped." We will try to save your work)".
Is anyone able to help with this, I don't know how to set up the audio setting is all new to me. Also do not know why this has happened given my audio works fine in any other program that I use on my pc. Any help from an expert on this forum would be greatly appreciated. Cheers, Joel.
My first guess is to check and possibly update the audio driver.
-
I have CC 2014, but need to SOUL CC (until 2014) to deliver FLV and F4V output - how can I download CC SOUL with FLV support?
You can install SOUL CC (7.2) by installing after effects CC (12,2) through the application of creative cloud.
-
CC of Dreamweaver takes conditional text? Specifically, can I put all of my tech data in a doc of DW and the output of the subsets of data (doc Admin against doc user versus doc Marketing) based on tags or other methods?
I don't have any front-end text editor (such as FrameMaker) or I'd do it here. Dreamweaver can do this without complex workarounds or procedures not supported?
Thank you very much.
Mike the Newbie
OK, that's fine. DW not conditionalization and I'll see if I can get what I need to do or find another approach.
Thanks a lot for your help.
Michael
-
Form of parameter in OAS and Web, output paper report
Hello
In the Report Builder 10g, I have this form of parameter. It begins before a paperreport is generated (with the accessories, LOV and etc..)
If I put my rdf in the OracleAS I can call the pit of the browser report, but there is no parameter window. How can I change the settings after
call report?
Another question:
How can I tell the OAS it must generate a pdf of my rdf?
Thank you
Paul
PS: If you are referring to the documentation please give the pagenumber ore sth.
Published by: pbecker on October 8, 2008 02:00
do rdf on pdf...Hello
If you wish to view the PDF in your browser, use the settings:
DESTYPE = CACHE and DESFORMAT = PDF in the URL:
Example:
http://myserver.mycompany.com/reports/rwservlet?Server=myrepserver&report=MyReport&destype=cache&desformat=PDF&userid=Scott/Tiger@mydbIf you use a different value for DESTYPE, (DESTYPE = FILE for example), the message:
"Oracle reports job properly run.
will be returned and the output stored in the file name specified by DESNAME.
You can get the PDF file using the showjobs page:
http://myserver.mycompany.com/reports/rwservlet/showjobs?Server=myrepserver
Concerning
-
Portege R600 / A600 and double output screen
Hello
Could you tell me if it is possible to output to two screens on the R600 or A600 with any of the Toshiba Docking solutions?
I was told that it is possible, however I was told today by the sales of Tosh is not possible to do. I want to end my home pc and the desktop pc and just wander between the two with a laptop. However, I use an extended desktop on both screens and would need this work.
Any advice on that?
Thank you
Paul
Hello
As far as I know you can t use two external displays. It is only possible to use the internal LCD screen with * a * external LCD display. That s what you can do.
But I put t understand why you want to use two external displays the internal display is good, you can extend the Windows desktop on an external monitor.
-
Satellite L650 speakers and sound output stopped working
Hello
The sound in my L650 just stopped working all of a sudden. It was ok and then nothing.
When connecting to the headphones, I can't hear a sound of crackling, that maintains the same volume regardless of the volume of system being 100% or mute.
I don't have any other way to test audio output (no cables hdmi or USB speakers).Nothing has been installed recently. The drivers are up to date. Reboot didn't solve it. Uninstallation and reinstallation of its controller either.
Everything looks fine on the part of the treatment (equalizer and its move from bars).
If something got physically loose/disconnected/broken inside?
See you soon
> I just put in the backpack and was moving, now it works again
Thanks for the good info!
-
Synchronization of analog and digital output with the external sample clock
Hello
First of all sorry for my English, I will try to explain what I want to do.
I want my PCIe-6321 to send two custom signals (modification sawtooths) on a mirror controller. I would also like to generate output with my card at the beginning of each tooth of saw. Everything must be synchronized with an external k-clock signal of 100 kHz. The idea is that whenever the PCI receives a trigger to external clock, it sends two analog output voltages and when he received 1024 clock ticks it will also send a pic of triggering TTL. What I do is first prepare the map and after that in a loop sending and modifing the output values of the two signals and at the same time send a digital signal Boolean in each arch, so when's done it 1024 iterations of the loop I send an event to the digital port. Attached you can see.
The problem is that I don't know how to synchronize both. Can I use the sample clock just to the analog output? I can use sample for the two outputs clock, or do I need to use the output of the meter? If don't know how to use it here.
If I do nothing else bad/wrong, I would be grateful for feedback.
Thanks in advance,
PabloI don't know how but I find the solution. I'm generating more than a positive value (as I was triggered maybe very fast the oscilloscope has been absent there). If I put the sample clock of digital output to use the sampling/ao/Dev1 clock that it doesn't, but if I put to use the same source as the OD (terminal where my external clock is connected), but the trigger to start the DO to be Dev1/ao/StartTrigger this works. I don't really know why, but it does.
Thank you for your patience and your help. I put here the final code.
-
Problem setting up an encoder input and PWM output tasks on CompactDAQ
I use a chassis with a modules 9474 cDAQ-9174 and 9411. I do not think it is important, but they are the cRIO-XXXX modules NOR old provided with a test configuration that has been distributed to early adopters. I use DAQmx tasks in an application (C libraries) to read (angular position) quadrature encoder and drive a motor directly with PWM current (pulse output). For various other needs, my tasks Setup is as follows:
[DAQmx] MajorVersion = 9
MinorVersion = 2
[DAQmxChannel venture 9411 wheel entry/AngularPosition]
CI. AngEncoder.PulsesPerRev = 500
CI. AngEncoder.InitialAngle = 0
CI. Encoder.ZIndexVal = 0
CI. Encoder.ZIndexPhase = a Low high B
CI. Encoder.ZIndexEnable = 0
ChanType = input meter
CI. MeasType = Position: angular encoder
CI. AngEncoder.Units = ticks
PhysicalChanName = cDAQ1Mod2/ctr2
CI. Encoder.DecodingType = X 4
[DAQmxChannel venture 9474 PWM output/PulseOutput]
CO. LTD.. Pulse.IdleState = low
ChanType = output meter
CO. LTD.. OutputType = Pulse:
CO. LTD.. Pulse.HighTime = 5.0000000000000004E - 006
CO. LTD.. Pulse.LowTime = 5.0000000000000002E - 005
CO. LTD.. Pulse.Time.InitialDelay = 0
CO. LTD.. Pulse.Time.Units = seconds
PhysicalChanName = cDAQ1Mod1/ctr3
[DAQmxTask venture 9411 wheel entry]
Channels = venture 9411 wheel input/AngularPosition
SampQuant.SampMode = continuous samples
SampClk.ActiveEdge = Rising
SampQuant.SampPerChan = 100000
SampClk.Rate = 100000
SampTimingType = sample clock
SampClk.src=/cDAQ1/100kHzTimebase
[DAQmxTask venture 9474 PWM output]
Channels = venture 9474, output PWM/PulseOutput
SampQuant.SampMode = continuous samples
SampQuant.SampPerChan = 100000
SampTimingType = implied
RegenMode = allow regeneration
[DAQmxCDAQChassis cDAQ1
] ProductType = cDAQ-9174
DevSerialNum = 0x18B3EC0
[DAQmxCDAQModule cDAQ1Mod1]
ProductType = NOR 9474
DevSerialNum = 0xDEDF40
CompactDAQ.ChassisDevName = cDAQ1
CompactDAQ.SlotNum = 1
[DAQmxCDAQModule cDAQ1Mod2]
ProductType = NOR 9411
DevSerialNum = 0xDEDB24
CompactDAQ.ChassisDevName = cDAQ1
CompactDAQ.SlotNum = 2
Each task works fine on its own (i.e. without the other). The problem is that if I start the task of the encoder first and then the task PWM, the latter causes an error:
Error-89137 occurred to the DAQ Assistant
Possible reasons:
Specified route can not be satisfied, because it requires resources that are currently in use by another route.Source device: cDAQ1
Point source:
80MHzTimebase
Destination device: cDAQ1
Destination
Terminal: Ctr3SourceNeed for resources in use by Source
Feature: cDAQ1
Terminal of source: 100kHzTimebase
Destination
Feature: cDAQ1
Destination terminal: Ctr2SampleClockThe task name: _unnamedTask<61>
I don't know why this is, but if I start the PWM task first, and then the task of the encoder, it also works. I should also mention that initially I was using counter 0 encoder, which caused a shift in the 100kHzTimebase to Ctr0SampleClock, which, according to the ways of device 9411, is not supported. Yet it worked (in itself). I wonder if this is happening under the hood isn't quite what is shown.
What is exactly the conflict and what can do to avoid it? The reasons for having to use specific modes and the settings (for example, the 'continuous samples' with 100kHzTimebase clock) are rooted in various performance and requirements of optimization that were created in a previous version of our software, so I prefer not to take a completely different path, if some small changes would lead us to correct the problem.
I appreciate your help.
Kamen
Hi Kamen,61>
The time base of 100 kHz is not a direct route to the counter sample clocks, the device actually uses one of the other counters to complete the road (the routing table is a little misleading here because it shows 2 meter that one always doing road - in fact it will be any available counter):
So in your case, when you start the task of the encoder, it uses one of the other available counters to complete the configured road (100 kHz to ctr2 sample clock timebase). Of course, she chose meter 3.
Possible workarounds (looks like you have already found one yourself):
1 start the PWM before the task of the encoder task - if the task PWM starts first the counter is already booked and the task of the encoder would choose another available counter to complete its road.
2. explicitly reserve the PWM task before you begin the task of the encoder (if you need to start the task of the encoder first).
3. use cDAQ1/_freqout to generate the clock sample 100 kHz signal and use this instead of routing to the time base of 100 kHz to the counter sample clock.
Change autour counters should also work, but I'm not 100% sure how the unit selects which counter to use for routing (I don't expect change in the future, but if it's not explicitly spec'ed somewhere so I wouldn't take my chances)-if it were me, I would choose one of the other options above.
Best regards
-
Basic measures and the output impedance of the change with PXI-4461?
Hello
I am required to build an audio station with platform PXI OR test.
It is my first experience with Renault. So I don't really know a lot...
The PXI-4461 is a replacement of a former HP audio Analyzer. The measure is quite simple:
1 generate fixed freq signal and measure AC RMS power
2 measure THD (total distortion harmic) at frequency fixed
3 measure SNR (signal to noise) at frequency fixed
4 generate and measure DC signals
5. change the output impedance of 50 ohms and 600 ohms.
If I have a good feeling on which tasks 1 to 4 are feasible. I would like to ask if the task 5 (change the output impedance) problem possible?
If this isn't a work around?
As for tasks 1 to 4, it is possible with out doing 'a sound vibration' Toolkit?
How helpful the Toolbox will be for the tasks listed above (humble).
What should be my starting point learn to manage these measurement with Labview?
Thanks in advance
Hi Hazkel,
Sound and Vibration toolkit will help a lot with steps 1 through 3. This without the Toolbox would require a very high level of knowledge with LabVIEW and you will probably run again for complications. In response to the fifth step, I tried to adapt the output impedance and am not able to do so programmtically. However, you can still do this in hardware by adding a shunt resistor and potentially switch between if necessary impedances. We have an article that deals with impedance matching and a circuit configuration to set the impedance if you are interested:
Impedance and impedance matching
http://www.NI.com/white-paper/3475/en/
I recommend starting with examples that we have already built in LabVIEW to familiarize yourself with the concepts. You will find them by clicking on help-> find examples-> search, then search for your application. Please let me know if you have any other questions.
Thank you
Maybe you are looking for
-
I can't find the button 'settings' at the top right. Where else might?
I would find this button because I want to activate my Trend Micro Security thing in the toolbar. I read that the first step to do is to find the 'settings' button at the top right, but I don't think it's there.
-
I need the 'STOP' button on the menu
I just upgraded to FireFox 9.1 and I lost the button "STOP". Could you please let me know how to get it back. Thank you
-
My new Satellite C850D-11F is slow
Hello I recently bought the Toshiba Satelitte c850d-11f with windows 8 preinstalled.I thought that the laptop came with the dual-core AMD APU E1-1200 1.4 ghz thanks to innovation and I tought it will be ok, but it's not. Before stopping all non-micro
-
For Qosmio X 300 NVIDIA display driver - 156
Aight guys, I m really frustrated with this I m helpless about what version of the drivers for my GeForce9800M I have to use. I already tried to use the drivers recommended Toshiba Web site at:http://PT.computers.Toshiba-Europe.com/innovation/downloa
-
Import from iPhoto - Meta-data missing?
I am importing photos from iPhoto in pictures, but it seems that most of the metadata is not transferred. The process is to select the file-> import in pictures, select the pictures at the bottom of the left sidebar in the dialog box, choose iPhoto->